标签:spring annotation 注解
Spring的核心是依赖注入(DI),而依赖注入的基础是依赖信息的配置,这些配置称之为元数据。在之前的的学习中,一直采用的是基于xml的配置,这些元数据配置在spring内部被注册成为BeanDefinition,spring以此为模版创建bean和注入依赖。
从spring 2.0开始,spring依次加入了对注解型元数据配置的支持。自此我们有了另外一种配置bean的方式。Spring包含很多种注解,如我们比较熟悉的@AutoWired、@Compoent,还有一些不太熟悉的如@Inject @Improt等。
Spring包含了如此多的注解,致使初学者对之望而生畏,对其中一些也比较模糊。因此可以对Spring的注解进行分类。Spring的xml元数据配置的核心是bean定义、属性及其依赖的配置,因此也可以从这个角度对spring注解进行分为以下,首先见下图:
本篇先对这些注解做一下简单的梳理,然后在后续的文章中,针对后三种做较为详细的说明。
下面稍微详细的进行说明下各个类别,并列举出大部分Spring支持的注解。
容器级别指的是注解用来配置Spring容器的,对应于SpringXML配置文件,如
@Configuration作用在class上,其内可以定义很多Bean
@Import引入其他Configuration
@ComponentScan 自动扫描Bean组件配置,和Configuration配合使用
Bean级别指的是被注解标记的对象(类或者方法),会向Spring容器注册一个BeanDefinition,Spring以此创建Bean实例。
@component 它和其他被其注解的注解 如@Service等作用于一个class上, 可以定义一个bean
@Named 和以上类似,来自JSR-330
@Bean 和@Configuration 或者@component 配合使用
此类别指的是作用于bean的属性,如是否延迟加载,Scope等,
@Qualifier 常和@autowired
@Lazy 延迟加载
@Scope 定义bean的Scope
@Required 可以标注在Set方法上,说明此方法需要被执行,否则跑出异常,长和@autowired 配合使用
@PostConstruct and@PreDestroy 来自于JSR,作用于生命周期
Spring可以使用这些注解进行依赖注入,通常是自动的,或者借助一些辅助信息。
@autowired自动依赖注入,有几种方式,byType,byName等,通常和@ Qualifier配合使用
@Inject 来自JSR-330,和以上类似,JSR-330相关注解
@Resource和以上类似,JSR-250相关注解
@Value 原始类型注入
以上简单的说明了下Spring支持的注解和其基本的作用,但到目前为止都是纸上谈兵,但是对Spring注解建立总体的印象还是比较重要的。需要注意的是,Spring注解和 XML配置是相辅相成的,各自有优缺点,在实际应用中要根据实际情况来决定。下篇将详细的讲述本篇讲述的内容。
标签:spring annotation 注解
原文地址:http://blog.csdn.net/windsunmoon/article/details/44360659