Spring @Autowired 注解
Spring @Autowired annotaion
Spring @Autowired
我对Spring@Autowired有疑问annotation.Please求助...
在Spring mvc 中,当我按此顺序尝试@Autowired 时
Controller--->Service--->Dao
即,在控制器中,我自动装配服务 Class 对象,在服务中 Class 自动装配 Dao 对象。
这个注入链工作得很好。
同样在strutrs2+Spring中,我也是这样应用@Autowired注解的
Action--->Service-->Dao
这个注入链也可以正常工作。
如果我从这个链外调用一个函数(例如:Custom Taglib class(来自jsp))到服务class中的函数然后在这个服务class Autowired dao 对象为空(即,此调用中断链)。
我的问题是
这个@Autowired 只在注入链中工作吗?
具有 @Autowire
d 字段的 Bean 只有在通过 Spring Bean 后处理器发送时才设置它们——也就是说,就像你说的,如果你自己自动装配它们。这是构造函数注入比字段注入更受欢迎的一个重要原因。而不是做
@Service
public class MyService {
@Autowired
private MyDao dao;
...
}
你应该做
@Service
public class MyService {
private final MyDao dao;
@Autowired
public MyService(MyDao dao) {
this.dao = dao;
}
}
这样,当您处于无法依赖 post 处理的服务的情况下(例如使用 jsp 标记库的情况),您可以简单地用 MyDao
对象实例化一个新实例,然后继续您的快乐之路。
Spring @Autowired
我对Spring@Autowired有疑问annotation.Please求助...
在Spring mvc 中,当我按此顺序尝试@Autowired 时
Controller--->Service--->Dao
即,在控制器中,我自动装配服务 Class 对象,在服务中 Class 自动装配 Dao 对象。
这个注入链工作得很好。
同样在strutrs2+Spring中,我也是这样应用@Autowired注解的
Action--->Service-->Dao
这个注入链也可以正常工作。
如果我从这个链外调用一个函数(例如:Custom Taglib class(来自jsp))到服务class中的函数然后在这个服务class Autowired dao 对象为空(即,此调用中断链)。
我的问题是
这个@Autowired 只在注入链中工作吗?
具有 @Autowire
d 字段的 Bean 只有在通过 Spring Bean 后处理器发送时才设置它们——也就是说,就像你说的,如果你自己自动装配它们。这是构造函数注入比字段注入更受欢迎的一个重要原因。而不是做
@Service
public class MyService {
@Autowired
private MyDao dao;
...
}
你应该做
@Service
public class MyService {
private final MyDao dao;
@Autowired
public MyService(MyDao dao) {
this.dao = dao;
}
}
这样,当您处于无法依赖 post 处理的服务的情况下(例如使用 jsp 标记库的情况),您可以简单地用 MyDao
对象实例化一个新实例,然后继续您的快乐之路。