@Configuration
告诉spring这是一个配置类
@Bean
给容器中注册一个bean类型为返回值类型id默认是方法名,结合@Configuration或者@Component使用。可以导入第三方组件,方法有参数默认从ioc容器获取,可以指定initMethod和destoryMethod方法
@Scope
设置组件作用域protoType多例子 singleton单例(默认)
@Lazy
懒加载(只针对单例有效)
@ComponentScan
包扫描
@ComponentScans
可以配置多个@ComponentScan扫描@TypeFilter指定过滤规则,需要自己实现TypeFilter类
@Conditional({Condition})
按照一定的条件判断,满足条件给容器注入bean,传入Condition数组,使用时需要自己创建类继承Condition然后重写match方法
@Import
快读给容器中导入一个组件
1Import(类名)容器中自动注入这个组件,id默认是组件全类名
2ImportSelector 返回需要导入得组件得全类名数组(实现ImportSelector接口返回数组全路径类名 )
3ImportBeanDefinitionRegistrar 手动注册bean
FactoryBean
工厂bean,交给spring来生产bean到bean的容器中,可以通过前缀&来获取bean本身
@Value
给属性赋值也可以使用spel和外部文件的值
@PropertySource
读取外部配置文件中的k/v保存到运行环境中,结合@Value使用或者使用ConfigurableEnvironment获取
@Profile
结合bean使用默认为default环境,可以通过命令行参数指定来切换环境
@Autowired
1.优先按照类型去容器中找对应的组件
2.按照属性名称作为容器id去找对应的组件
@Qualifier
指定默认组件结合@Autowired使用
1标注在类上Spring创建对象调用构造器创建对象
2.标注在方法上
@Primary
自动装配的时候默认首选bean,配合bean使用
@Resource(jsr250)
按照组件名称进行装配
@Inject(jsr330)
功能和Autowried一致不支持require=false
Bean的生命周期
初始化和销毁
1.通过@bean指定init-method和destory-method
2.通过实现InitalizingBean定义初始化逻辑,实现DisposaleBean实现销毁方法
3.实现BeanPostProcessor接口的后置拦截器放入容器中,可以拦截bean的初始化,并可以
在被拦截的bean的初始化前后做一些处理工作
SpringAop
使用步骤
@EnableAspectJAutoProxy
开启基于注解的aop模式
@Aspect
定义切面类切面类里面定义通知
@PointCut
定义切入点可以写切入点表达式指定哪个方法切入
通知方法
1.@Before 前置通知
2.@After 后置通知
3.@AfterRuturning 最终通知
4.@AfterThrowing 异常通知
5.@Round 环绕通知
JoinPoint
连接点是一个类配合通知使用可以获取切入的点的信息
事务控制
基本步骤
1.配置数据源datasource
2.配置事务管理器来控制事务PlatformTransactionManager
3.@EnableTransactionManager开启基于注解的事务管理功能
4.给方法上面标注@Transaction表示当前方法是一个事务方法