[英]Problems with @Autowire annotation
在我的A類中,我正在自動裝配具有@Service批注的B類。 在我的B類中,我正在自動裝配C類,並在B類中的@Transactional方法內使用對該類的引用。
而且似乎自動接線沒有任何作用,因為我得到了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);
}
}
有幫助嗎?
如果要使用@Autowired
注釋為您進行Spring接線,則需要注冊適當的BeanPostProcessor
來提供幫助。 您可以讓Spring通過在Spring配置中包含以下元素來為您完成此操作:
<context:annotation-config/>
有關更多信息,請參閱Spring 3.0文檔中的3.9節 。
另外,由於似乎您使用的是@Component
型注釋( @Component
, @Service
@Controller
, @Service
@Controller
),因此您可能正在嘗試放棄Spring XML接線(或減少接線)。 您將需要確保在Spring XML中包括component-scan元素。
注意:如果要包含component-scan
,則無需使用annotation-config
元素。
<context:component-scan base-package="your.package.name"/>
有關更多信息,請參閱Spring 3.0文檔中的3.10節 。
確保以某種方式配置了DAO ...無論是使用xml配置中的注解(@ Service,@ Component,@ Repository),還是通過其他方式進行配置。
如果這樣做沒有幫助,我們將需要更多信息。
服務等級
@Service
public Class serviceImpl implements MyService {
@Autowired
private DAOInterface dao;
//nullpointer
@Transactional
public String getItem(){
return dao.getItem(2);
}
}
spring-servlet.xml
<context:annotation-config/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.