Spring注解详解

来源:互联网 发布:天刀npc捏脸数据库 编辑:程序博客网 时间:2024/06/08 00:22

@Autowired 注释

Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

Spring 通过一个 BeanPostProcessor @Autowired 进行解析,所以要让@Autowired起作用必须事先在 Spring容器中声明AutowiredAnnotationBeanPostProcessor Bean

 <!-- BeanPostProcessor将自动起作用,对标注 @AutowiredBean进行自动注入 -->

<bean class="org.springframework.beans.factory.annotation.        AutowiredAnnotationBeanPostProcessor"/>

@Qualifier 注释指定注入 Bean 的名称

@Autowired

public void setOffice(@Qualifier("office")Office office) {  this.office = office;}

@Qualifier 只能和@Autowired 结合使用,是对@Autowired 有益的补充。一般来讲,@Qualifier对方法签名中入参进行注释会降低代码的可读性,而对成员变量注释则相对好一些。

@Resource

@Resource 的作用相当于 @Autowired,只不过@Autowired byType 自动注入,面@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分别是 nametypeSpring@Resource注释的 name属性解析为 Bean的名字,而 type属性则解析为 Bean的类型。所以如果使用 name属性,则使用 byName的自动注入策略,而使用 type属性时则使用 byType自动注入策略。如果既不指定 name也不指定 type属性,这时将通过反射机制使用 byName自动注入策略。

例:@Resource @Resource(name = "office")

一般情况下,我们无需使用类似于 @Resource(type=Car.class) 的注释方式,因为 Bean的类型信息可以通过 Java反射从代码中获取。

要让 JSR-250 的注释生效,除了在Bean 类中标注这些注释外,还需要在Spring 容器中注册一个负责处理这些注释的BeanPostProcessor

<bean   class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>

CommonAnnotationBeanPostProcessor 实现了 BeanPostProcessor接口,它负责扫描使用了 JSR-250注释的 Bean,并对它们进行相应的操作。

@PostConstruct

@PreDestroy

JSR-250 为初始化之后/销毁之前方法的指定定义了两个注释类,分别是@PostConstruct @PreDestroy,这两个注释只能应用于方法上。标注了@PostConstruct 注释的方法将在类实例化后调用,而标注了@PreDestroy 的方法将在类销毁之前调用。

 

XML 配置文件中完全移除 Bean定义的配置有:

@Component、

@Component 是一个泛化的概念,仅仅表示一个组件 (Bean),可以作用在任何层次。

@Service、

@Service 通常作用在业务层,但是目前该功能与 @Component相同。

@Constroller

@Constroller 通常作用在控制层,但是目前该功能与 @Component相同。

@Repository

同上

 <context:component-scan base-package="com.zap.demo2.controller" />

xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean

0 0
原创粉丝点击