之前提到在xml文件中,一个bean对应一个类,在MyTest中通过获取bean的方法来创建对象。现在介绍一个新的方法,通过使用注解@Component
来代替bean。
@Component
使用注解@Component
之前,先在xml文件中添加组件:
1 | <context:component-scan base-package="com.xliu.pojo"/> |
意思为自动扫描路径com.xliu.pojo中所有的@Component
。
在pojo类前添加注解@Component
意思是告诉Spring,我是一个pojo类,请将我注册到容器中。
使用前
假设我们有一个pojo类User.java:
1 | public class User { |
在xml中注册的bean为:
1 | <bean id="user" class="com.xliu.pojo.User"> |
MyTest:
1 | public static void main(String[] args) { |
输出:
1 | xliu |
使用后
User.java:
1 | @Component |
@Component
表示组件,注册到Spring中,@Value
表示对属性name的赋值
applicationContext.xml:
1 | <context:component-scan base-package="com.xliu.pojo"/> |
在xml文件中只需要这一行添加组件即可。
MyTest不变,结果输出:
1 | xiaokeliu |
事实证明,虽然在xml文件中我们没有显式地注册bean,但还是可以通过getBean来创建对象。
衍生注解
@Component
有几个衍生注解,我们在web开发中,会按照MVC三层架构分层
- dao(@Repository)
- service(@Service)
- controller(@Controller)
功能和@Component
一样,都是代表这个类注册到Spring容器中,装配。
XML与注解最佳实践
XML用来管理bean,注解负责完成属性的注入。
那么XML文件中就只有一个一个<bean>
,而给属性赋值则通过注解(@Value)实现。