Spring注解学习
创建对象的注解
需要在xml文件中配置需要扫描注解的包
<context:component-scan base-package="com.github.excellent"/>
- @Component(value = “user”) (value可以省略),将当前类的对象存入Spring容器中。需要提前说明需要扫描的包。
- @Controller(value = “user”) (value可省略) — 表现层
- @Service(value = “user”) ---- 业务层
- @Repository(value = “user”) ---- 持久层
- 后面三个是Spring为了提供明确的三层设计提供的注解,使得三层对象更加明确,以上注解都用在类上。
注入数据的注解
注入Bean类型的数据
- @Autowired :按照类型自动注入,当Spring容器中有与类属性相对应的类型时,就会自动匹配,实现注入。一个都匹配不上则会报错。如果有多个匹配,则会按照变量名称再次筛选(可以用在属性,方法上)
- @Qualifier(value = “user”):在按照类型匹配的基础上,再按照名称进行匹配。必须搭配Autowired使用,不能单独使用。该注解主要用来解决多个bean属性都符合的时候,不知道自动注入哪个的情况。
- @Resource(name = “user”):直接按照id进行注入
注入基本类型及String类型
- @Value(value = “Jack”)
这样看起来和硬编码差不多,还不如直接给属性赋值就行了,确实也是这样。因此@Value远远没有这么简单,该注解主要通过和SpEL表达式搭配使用,来动态的为属性赋值。
改变作用范围的注解
- Scope(value = “propertype”)
生命周期相关的注解
- @PostConstruct:声明初始化方法
- @PreDestroy:声明销毁方法