Spring注解

Posted Money131

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring注解相关的知识,希望对你有一定的参考价值。

包扫描+组件注解(@Component@Service@Controller@Repository

@Bean 给容器添加Bean

@Import 导入组件

Import(类名),id默认组件全名

ImprtSelector,返回需要导入组件全类名

ImportBeanDefinittionRegistrar:手动注册Bean

Spring提供BeanFactory

默认获取BeanFactory调用getObject创建对象

@Conditional{{xxx.class}},按照引入的限制规则,满足条件注册Bean对象

@Scope

Prototype:多例,ioc容器启动不会调用方法创建对象在容器中,在每次获取时才调用调用方法创建对象。(Lazy

Singleton:单例,启动就会创建对象,以后每次调用就是从容器拿(即时加载)

 

组件注册过滤条件

@ComponentScan value:指定要扫描的包

ExcludeFilters = Filter[]: 指定规则,排除那些组件

IncludeFilters = Filter[]: 指定包含那些组件,需要将userDefaultFilers设置为false

FilterType.ANNOTATION:按注解指定

FilterType.ASSIGABLE_TYPE:按指定类型

FilterType.REGEX:使用正则指定

FilterType.CUSTOM:自定义

 

生命周期中

@Bean可以指定initdestroy方法

通过bean实现InitialzingBean(定义初始化逻辑),DisposableBean(定义销毁接口)

@PostConstructor:在bean创建完成并且属性复制完成,来执行初始化

@PostDestroy:在容器销毁之前通知我们进行清理工作

BeanPostProcessor

PostProcessorBeforeInitialiation:在初始化工作之后

PostProcessorAfterInitialiation:在初始化工作之前

@AutoWired 注入

@Qualifier(“xxxx”)需要指定装配组建的id

@Primary , 排序问题,使用该注解创建Bean自动排在第一位

@Resource @AutoWired都是自动注入

@Inject  需要导入依赖,没有required=false

@Value赋值

  1. SpEL:#{}
  2. ${}取出配置文件

@PropertySource读取外部配置文件以K/V形式,通过${}读取文件中的值

@Prpfile:指定组件在那个情况下才能注册到容器,不指定默认执行

 

Aop

@Before:前置通知,logStrat在目标div运行之前

@After:后置通知,logEnd在目标(div)运行之后,无论方法征程结束还是异常结束

@AfterThrowinglogException出现异常

@Around:动态代理,手动目标方法进行(joinPoint.Proceed()

@Aspect:告诉Spring这是切面类,开启事物

@EnableAspectJAutoProxy:开启注解Aop

@EnableTransactionMansgement:开启事务的管理功能

@Transactional:标识当前方法是一个事物方法

@EventListenerclass={}):可以在组件上的方法监听事件

@HandlesTypes:指定类型下面的子类传递过来Set<Class<?>>

@EnableWebMvc:接管springmvc

@GetMapping,处理get请求
@PostMapping,处理post请求
@PutMapping,处理put请求
@DeleteMapping,处理delete请求

 

四个元注解:

@Retention:注解的保留位置         

@Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含

@Retention(RetentionPolicy.CLASS)     // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,

@Retention(RetentionPolicy.RUNTIME)  // 注解会在class字节码文件中存在,在运行时可以通过反射获取到

@Target:注解的作用目标  

@Target(ElementType.TYPE)   //接口、类、枚举、注解

  @Target(ElementType.FIELD) //字段、枚举的常量

  @Target(ElementType.METHOD) //方法

  @Target(ElementType.PARAMETER) //方法参数

  @Target(ElementType.CONSTRUCTOR)  //构造函数

  @Target(ElementType.LOCAL_VARIABLE)//局部变量

  @Target(ElementType.ANNOTATION_TYPE)//注解

  @Target(ElementType.PACKAGE) ///包   

@Document:说明该注解将被包含在javadoc中

@Inherited:说明子类可以继承父类中的该注解

 

以上是关于Spring注解的主要内容,如果未能解决你的问题,请参考以下文章

Spring 常用注解大全

Spring注解原理探索(一)

Spring Boot实战笔记-- Spring高级话题(组合注解与元注解)

Spring注解

spring使用注解,自动扫描类的时候怎么注入

Spring之IOC-注解方式