spring中常用的注解介绍

来源:互联网 发布:王中磊和女星 知乎 编辑:程序博客网 时间:2024/05/21 22:47

spring之前的版本用的是xml存储、交换数据,后来受Rails框架的启发,spring开始支持使用Annotation来代替xml文件

首先使用Spring注解,需要在配置文件中有如下配置:

    <!-- 配置与注解有关的处理器 -->    <context:annotation-config/>        <!-- 扫描controller -->    <context:component-scan base-package="com.xh.ssm.controller"/>


其中扫描器配置隐式的包含了注解处理器,所以就不用配置<context:annotation-config/>

注解其实本身并没有什么作用,根XML一样,只是进行一些配置,传递一些信息,重要的是背后的解析器,处理器!!!!

常用注解如下:

1.与搜索有关的注解:
Spring要求程序员显示指定搜索哪些路径下的Java类,然后符合条件的Java类注册到spring容器中,那么问题是:spring如何知道该把哪些类当成Bean类处理?  所以就用到了如下注解:
# @Component : 标注一个普通的spring bean类;
# @Controller: 标注一个控制器组件类;
# @Service: 标注一个业务逻辑组件类;
# @Repository : 标注一个Dao组件类;

然后需要在spring配置文件中配置搜索路径:
<!-- 自动扫描指定包以及其子包下的所有Bean类--><context:component-scan base-package="com.xh.ssm.service.impl"/>

** 默认情况下:扫描的Bean注册到spring容器,这些Bean实例的id默认是Bean类的首字母小写!!!

** 还可以通过为<context:comonent-scan />添加子元素 <include-filter /> 或者 <exclude-filter/>来指定springBean类,通过子元素属性

type指定过滤器类型;expression指定表达式;等等,这里不做详细介绍。


2.与作用域有关的注解:

使用XML配置来配置Bean实例时,可以指定作用域,也可以通过@Scope注解来指定;如果不指定默认为singleton。
//指定该Bean实例的作用域为prototype@Scope("prototype")//指定该类作为SpringBean,还可以指定id@Component("axe")public class SteelAxe implements Axe{}

3.与依赖有关的注解:

使用@Resource(name="xxx")注解来配置依赖,spring会将该注解的name属性值,解析为Bean的id,然后完成依赖注入。
可以标注在字段上,或者setter方法上;
@Resource:按照名称进行注入,如果不指定name值,默认是字段的名称,或者setter方法中属性名称;
@AutoWire:按照类型进行注入,

4.与Bean生命周期有关的注解:

@PostConstruct和@PreDestory,这两个注解用于定制Spring容器中Bean的生命周期行为。等同于 init-method,
destory-method两个属性;一个会在完成依赖注入后调用,一个会在Bean销毁前调用,还有Bean的后处理器,这里不做介绍。

这两个注解标注在方法上,指定该方法为初始化方法,或者销毁方法。

5.Spring3.0新增的注解:

@DependsOn和@Lazy,是spring3.0新增的注解:
@DependsOn:该注解是类级别的,可以指定一个String数组类型的值,表示在初始化该Bean之前,会强制初始化数组中的Bean。
@Lazy:该注解是类级别的,可以指定一个布尔值,表示是否要预初始化该Bean
//强制初始化数组中的Bean@DependsOn({"steelAxe", "xh"})//预初始化该Bean@Lazy(true)@Componentpublic class Chinese{}






0 0
原创粉丝点击