spring中常用的注解介绍

    xiaoxiao2021-03-25  80

    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) @Component public class Chinese{ }

    转载请注明原文地址: https://ju.6miu.com/read-34828.html

    最新回复(0)