在我的A类中,我将自动连接具有@Service注释的B类。在我的B类中,我是自动连接C类,并在B类的@Transactional方法中使用对该类的引用。
看来Auto-Wiring没有做任何事情,因为我得到了java.lang.NullPointerException
A类示例:
@Controller
public Class controller{
@Autowired
private MyService myservice;
}
B类
@Service
public Class serviceImpl{
@Autowired
private DAOInterface dao;
//nullpointer
@Transactional
public String getItem(){
return dao.getItem(2);
}
}
任何帮助?
答案 0 :(得分:4)
如果您想使用@Autowired
注释为您进行Spring连接,则需要注册正确的BeanPostProcessor
来协助。您可以让Spring通过在Spring配置中包含以下元素来为您执行此操作:
<context:annotation-config/>
请查看Section 3.9 in the Spring 3.0 Documentation以获取更多相关信息。
此外,由于您似乎正在使用构造型注释(@Component
,@Service
,@Controller
),因此您可能会尝试放弃Spring XML连接(或减少它)。您需要确保在Spring XML中包含component-scan元素。
注意:如果您要包含component-scan
,那么您不需要使用annotation-config
元素。
<context:component-scan base-package="your.package.name"/>
请查看Section 3.10 in the Spring 3.0 Documentation以获取更多相关信息。
答案 1 :(得分:1)
确保以某种方式配置DAO ...是否带有注释(@ Service,@ Component,@ Repository),xml配置或其他方式。
如果这没有用,我们需要更多信息。
答案 2 :(得分:0)
服务类
<context:annotation-config/>
spring-servlet.xml
form