NutzCN Logo
问答 在过滤器中注入Service
发布于 2938天前 作者 xiaomi008 2435 次浏览 复制 上一个帖子 下一个帖子
标签:
@Modules(scanPackage = true)
//@IocBy(type = JsonIocProvider.class, args = "config")
@IocBy(type = ComboIocProvider.class,
		args = {"*json",
				"config",
				"*annotation",
				"org.markers"
		})
@Filters(@By(type = CheckSession.class, args = {"user", "/login"}))
public class MainModule {
}


@IocBean
public class CheckSession implements ActionFilter {
	@Inject("userService")
	private UserService userService;
}

@IocBean
public class UserService {
	@Inject("dao")
	private NutDao dao;
}

发现那个UserService并没有注入,怎么破

6 回复

如果依赖注入的话, 就不能做到参数了, 换个方式取.

public View match(ActionContext actionContext){
    if (userService == null)
        userService = ac.getIoc().get(UserService.class);
    // 其他代码
}

ok,我去试一试

上面的代码可以工作,但是发现这句话要运行很久,第一次的时候卡住将近1分钟。

用了何种数据库连接池,初始化连接数改成1

改成1的确好了一点,但是为什么会这样?

初始化Service导致Dao的初始化,然后到连接池,但是以前没有这个filter的时候,直接controller里面调用service也没发现卡这么久啊

这得看卡在哪一句日志

NutDao初始化完成后,会从数据库连接池取一个连接进行自我初始化, 如果取连接这一步非常慢, 无非就是连接池初始化的时间太长.

至于为啥连接池初始化长, 一方面是初始化连接数的大小,一方面是数据库连接建立的速率(一般来说Oracle最慢,其他数据库都是秒建)

PS: 用的啥连接池,啥数据库?

添加回复
请先登陆
回到顶部