@Autowire注释的问题

时间:2011-09-05 23:04:24

标签: java spring spring-mvc

在我的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);
   }

}

任何帮助?

3 个答案:

答案 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