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可以指定init和destroy方法
通过bean实现InitialzingBean(定义初始化逻辑),DisposableBean(定义销毁接口)
@PostConstructor:在bean创建完成并且属性复制完成,来执行初始化
@PostDestroy:在容器销毁之前通知我们进行清理工作
BeanPostProcessor:
PostProcessorBeforeInitialiation:在初始化工作之后
PostProcessorAfterInitialiation:在初始化工作之前
@AutoWired 注入
@Qualifier(“xxxx”)需要指定装配组建的id
@Primary , 排序问题,使用该注解创建Bean自动排在第一位
@Resource 和@AutoWired都是自动注入
@Inject 需要导入依赖,没有required=false;
@Value赋值
- SpEL:#{}
- ${}取出配置文件
@PropertySource读取外部配置文件以K/V形式,通过${}读取文件中的值
@Prpfile:指定组件在那个情况下才能注册到容器,不指定默认执行
Aop
@Before:前置通知,logStrat在目标div运行之前
@After:后置通知,logEnd在目标(div)运行之后,无论方法征程结束还是异常结束
@AfterThrowing:logException出现异常
@Around:动态代理,手动目标方法进行(joinPoint.Proceed())
@Aspect:告诉Spring这是切面类,开启事物
@EnableAspectJAutoProxy:开启注解Aop
@EnableTransactionMansgement:开启事务的管理功能
@Transactional:标识当前方法是一个事物方法
@EventListener(class={}):可以在组件上的方法监听事件
@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注解的主要内容,如果未能解决你的问题,请参考以下文章