Spring框架注解
@Configuration:标记该类为配置类
@Bean:标记组件、导入第三方包中的组件
Value可以指定名称
Initmethod初始化(对象创建完成,并赋值好,调用初始化方法)
Detorymethod销毁(单实例:容器关闭时销毁;多实例:容器不会管理这个bean)
实现InitializingBean(定义初始化逻辑)
实现Disposablebean(定义销毁逻辑)
@PostConstruct:在bean创建完成并属性赋值完成,初始化方法
@PreDestoy:在容器销毁bean之前通知我们进行清理工作
BeanPostProcessor [interface]:bean的后置处理器,在bean初始化前后进行一些处理工作
@Import:给容器导入组件
(1)@Import(要导入到容器中的组件),id默认是组件的全类名
(2)ImportSelector:返回需要导入的组件的全类名数组
(3)ImportBeanDefinitionRegistrar:手动注册bean到容器中
(4)Spring提供的FactoryBean(工厂bean)
默认获取到的是工厂bean调用getobject创建的对象
要获取工厂bean本身,我们需要给id前面加一个&
@Componentscan:组件扫描
组件注解
@Controller:标记控制器上面的
@Service:服务层
@Repository:
@Component:普通组件
@Scope:设置作用域
Prototype:多实例ioc容器启动并不去调用方法创建对象放在容器猴子那个,每次获取的时候才会调用方法创建对象
Singleton:单实例(默认值):ioc容器启动会调用方法创建对象放到ioc容器中
Request:同一次要求创建一个实例
Session:同一个session创建一个实例
@lazy:懒加载
@Conditional:按照一定的条件进行判断,满足条件给容器中注册bean
@Value赋值
可以通过${}
@PropertySource:读取外部配置文件.properties的k/v保存在运行的环境变量
@Autowired(默认按照类型去找对应的组件,如果找见多个相同类型的组件,再将组件的id去容器中查找):自动注入
标注在方法上(默认不写),spring容器创建当前对象,就会调用方法,完成赋值
方法使用的参数,自定义类型的值从ioc容器中获取,如果组件只有一个有参构造,这个有参构造的@Autowired可以不写
Required:是否必须将属性赋值
@Qualifier:指定需要装配的组件的id,而不是使用属性名
自动装配默认预订要将属性赋值好,否则报错
@Primary:让spring惊醒自动装配的时候,默认使用首选的bean
也可以继续使用@Qualifier指定装配的名字
@Resource:java规范中的,可以和autowired一样实现自动装配功能,默认是按照组件名称进行装配的,没有能支持@Primary功能没有支持autowired(reqiured=false)
@Inject(需要导入javax.Injece的包):与autowired的功能一样,没有required=false的功能
自定义xxxAware接口,在创建对象的时候,会调用解开规范的方法注入相关组件,功能使用xxxProcessor
@Profile:指定创建在那个环境的情况下才能被注册到容器中,默认石default环境
加了环境标识的bean,只有这个环境被激活的时候才能被注册到容器中
@EnableAspectJAutoproxy:开启基于注解的aop模式
@Pointcut:抽取公共的切入点表达式
@Aspect:告诉spring当前类是一个切面类
@Before:前置通知:在目标到达运行之前运行
@After:后置通知:在目标方法运行结束后运行(无论方法是否正常结束)
@AfterReturning:返回通知
@AfterThrowing:异常通知
@Around:环绕通知
@Transactional:是声明式事务管理
@EnableTransactionManagement:开启基于注解的实物管理功能
@EventListener:监听器
Public void 方法名(Applistener event(就是事件)){}
@Author:IDEA设置类的文件头注释
@Override:检测被该注解标注的方法是否是继承自父类(接口)的
@Depercated:该注解标注的内容,表示已过时
@SupperssWarnings:压制警告
一般传递all
自定义注解
元注解
@Target:描述了注解能够作用的位置
@Retention:描述注解被保留的阶段
@Documented:描述注解是否被抽取到api文档中
@Inherited:描述注解是否被子类继承
Public @interface 注解名称
本质:注解本质上是个接口,该接口默认继承Annotation接口