Spring常用注解(一)
声明bean对象系列
1.@Component
- 作用:相当于配置了一个bean标签
- 位置:类上面
- 属性:value,指定bean的id。默认值为当前类的短名然后首字母改小写
2.@Controller 一般用于表现层注解,控制器的声明。
- 负责接收view请求,转向对应的model处理,并把结果填充view当中
- 标注一个控制器组件类
3.@Service 一般用于业务层
- 标注一个业务逻辑组件类
4.@Repository 一般用于持久层(dao层)
- 标注一个DAO组件类
- 该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
注入bean对象系列
1.@Autowired : 由Spring提供
- 作用:自动按照类型注入,不关心bean的id。
只要有唯一的类型匹配就能注入成功,set方法也不是必须的了
如果不唯一,即一个接口有多个实现类
则会判断变量名称是否跟bean的名称相同
如果都不匹配则报错
2.@Inject:由JSR-330提供
3.@Resource:由JSR-250提供
- 默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
4.@Qualifier
-
作用:在自动按照类型注入的基础上,再按照bean的id注入
在给类成员注入数据时需要和@Autowired一起使用!给方法的形参注入可以独立使用 -
属性:value,用于指定bean的id
-
注意:可以放在形参上,即方法的参数上指定形参的bean id
5.@Value
- 作用:用于注入基本类型和String类型数据,可以借助Spring的el表达式读取properties文件中的配置
- 属性:value,用于指定要注入的数据
java配置类相关系列
1.@Configuration:声明当前类为配置类,相当于xml形式的Spring配置
- 作用:把当前类作用spring的配置类,当ApplicationContext去找bean.xml时,可以注入一个SpringConfiguration.class,表示bean.xml放在当前类的目录下。
- 位置:类上
2.@Bean:注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式
- 作用:让当前方法的返回值存入spring容器中,简单来说,当创建的对象是第三方的包new出来的时候,我们想使用注解却不能去修改第三方的包,则可以写一个createObject方法,返回一个第三方 包new出来的对象,并加上@Bean就能表示该返回的对象是一个bean要加入容器中。
- 属性:name,指定bean的id,如果不指定则默认值为方法的名称
- 位置:方法上
3.@ComponentScan : 用于对Component进行扫描,相当于xml中的
- 作用:该类的作用就相当于bean.xml,在该类上添加当前注解
- 属性:value,数组类型{},一个值可直接写"com.xxx"表示扫描当前包
4.@WishlyConfiguration :是@Configuration与@ComponentScan的组合注解,可以替代这两个注解
5.@Import
- 作用:如果要将不同的配置文件拆开,则需要该注解,放在SpringConfiguration主配置类上
- 属性:value,例如:OtherConfig.class,这样就可拆分配置类
- 注意:该注释用于配置文件的引入,因此不会把配置文件的类放入容器中,一定注意什么时候用@Component什么时候用@Import,要不要需要使用当前类的方法!
6.@PropertySource
- 作用:从配置文件中加载属性,例如properties文件,通过该属性对例如数据库的配置进行加载。该注解放在主配置类的上方,指定配置文件的路径即可,配合value使用
- 属性:value,classpath:properties.properties配置文件路径,@Value("${配置文件的key}")
- 注意:spring4.3之后会自带${}解析器,之前的版本需要自己配解析器
用于改变bean对象范围系列
1.@Scope
- 作用:用于改变bean的作用范围
- 属性:value,用于指定范围的取值,取值和xml中scope属性的取值是一样的。
Singleton (单例,一个Spring容器中只有一个bean实例,默认模式),
Protetype (每次调用新建一个bean),
Request (web项目中,给每个http request新建一个bean),
Session (web项目中,给每个http session新建一个bean),
GlobalSession(给每一个 global http session新建一个Bean实例)
和bean对象生命周期相关系列
1.@PostConstruct
- 作用:用于指定初始化方法,等于init-method
2.@PreDestroy
- 作用:用于指定销毁方法,等于destroy-method