关于在Spring Framework中使用**@Autowired**注释和接口声明的一些疑问

And*_*ili 3 java spring annotations spring-mvc autowired

我是Spring框架中的新手,我对使用@Autowired注释和接口声明有一些疑问.

参考这个例子:

http://viralpatel.net/blogs/spring3-mvc-hibernate-maven-tutorial-eclipse-example/

我知道@Autowired注释可用于自动链接属性上的bean.

在前面的例子中,我有以下情况:

我有一个ContactDAO接口,它的实现类名为ContactDAOImpl

接下来在ContactServiceImpl类中,使用@Autowired对此变量进行了注释:

@Autowired
private ContactDAO contactDAO;
Run Code Online (Sandbox Code Playgroud)

我的第一个疑问是因为ContactDAO是一个接口,所以我接线的是什么?具体类型:ContactDAOImpl?如果是的话,Spring Framework是否可以做到这一点?

第二个疑问与spring-servlet.xml配置文件中没有针对ContactDAO orf ContactAOImpl类的bean定义有关...为什么?是不是因为ContactDAOImpl类使用annoted @Repository注解?

谢谢

安德里亚

esa*_*saj 5

我的第一个疑问是因为ContactDAO是一个接口,所以我接线的是什么?具体类型:ContactDAOImpl?如果是的话,Spring Framework是否可以做到这一点?

只要只有一个匹配的实现,Spring将自动为您提供接口的实现.通过使用@Qualifierwith @Autowired和命名实现,还有一种方法可以将来自多个候选项的单个实现与自动装配相匹配.

第二个疑问与spring-servlet.xml配置文件中没有针对ContactDAO orf ContactAOImpl类的bean定义有关...为什么?是因为使用@Repository注释来注释ContactDAOImpl类吗?

如果你使用的注释(@Component,@Repository,@Service,@Controller)在实现了配置,您不需要在XML明确定义豆(尽管你可以做到这一点也可以).

编辑:我的这个旧答案可能会更多地阐明在Spring中使用注释.