spring中的注解、xml标签
context:component-scan开启扫描
@componentScan用注解开启扫描
excludeFilters 排除哪些组件
filterType:ANNONTION 按照注解排除
ASSIGNABLE_TYPE 按照给定的类型ASPECTJ 使用aspectj表达式
REGEX 正则表达式
CUSTON 自定义规则 typeFilter的实现类
includeFilters 只扫描哪些组件
@componentScans
就是@componentScan的数组
@configration 配置类注解
通过AnnontionConfigApplication获取applicationcontext
通过AnnontionConfigApplication.getBean(xx.class)获取具体的bean信息
通过AnnontionConfigApplication.getBeanNamesForType(xxx.class)获取到这个类在容器中的名字
通过AnnontionConfigApplication.getBeanDefinitionNames()获取所有组件的名字如:controller等
@Bean(指定类名);默认以方法名为类名 对应 xml中的标签中的id
@Scope 相当于xml标签的scop属性
prototype 多实例 ioc容器启动时不会创建对象,在每次调用的时候才会创建新的对象singleton 单实例 ioc容器启动时创建的对象
request 同一次请求创建一个实例
session 同一个session创建一个实例
@Lazy 相当于xml标签的lazy-init属性
调用时才会创建bean
@Conditional 按照一定条件进行判断,满足之后再注入到容器中,可以放在类中统一设置
必须实现condition接口
@Import 导入第三方包(也可以用@Bean通过构造方法注入比较麻烦)
bean的id是默认的全路径名
@ImportSelector
实现ImportSelector接口,方法中不能返回null
实现factoryBean:
默认获取到bean调用的的getObject对象要获取工厂本身要在id前加一个&符号(源码是这样定义的)
bean的生命周期可以自己制定
对应xml中<bean>标签中的init-method 和 destory-method属性用过@bean注解指定init方法 和destory方法
默认单例会在容器关闭的时候销毁,在多实例中的时候不会自动调用销毁方法需要手动完成
@postconstoruct 在bean创建完成并且赋值完成;来执行初始化方法
@predestory 在容器销毁bean之前通知进行清理
@BeanPostProsser bean的前置、后置处理;需要实现beanpostprosser
spring底层对BeanPostProsser的使用
bean赋值,注入其他组件,@Autowired等都是动过这个进行注解的
@Value注解可直接赋值
xml中加载properties配置文件用<context:propery-placeholder location> @PropertiesSource 读取外部配置文件中的值 @PropertiesSources 过个@PropertiesSource
@Autowire spring中的
此标签可以加载 方法、构造器、参数、属性 都是从容器中获取@Qualifier 指定装配组件的id,在有多个bean的时候使用
@Resource 没有@Primary的特性 没有reqiured=false的属性
@Inject javax.inject的包 没有reqiured=false的属性
自定实现xxxAware,注入到bean中;每个xxxAware都有xxxProssor实现
@Profile用在不同环境的标识 默认是default;可以写在bean上或者类上
@EnableAspectJAutoProxy 开启aop 相当于xml中的aop:aspectj-autoproxy
利用AspectJAutoProxyRegistrar自定义给容器注册bean
AOP原理:
1.创建ioc容器2.刷新容器
3.注册bean的后置处理器,拦截bean的创建
1>先获取ioc容器已经定义了的需要创建对象的所有BeanPostProessor
2>给容器中加别的BeanPostProessor
3>优先注册实现了priorityOrderd接口的BeanPostProessor
4>再给容器中注册实现了orderd接口的BeanPostProessor
5>注册没实现优先级接口的BeanPostProessor
6>创建BeanPostProessor对象保存到容器中
7>把BeanPostProessor注册到BeanFactory中
总结:
1.@EnableAspectJAutoProxy开启AOP2.@EnableAspectJAutoProxy会给容器中注册一个
AnnotationAwareAspectJAutoProxyCreator后置处理器
3.容器创建流程
1>注册后置处理器;
创键AnnotationAwareAspectJAutoProxyCreator
2>初始化剩下的bean
事务:
@EnableTransactionManagement 相当于xml中的<tx:annotation-driven>注意:一定要配置事务管理器
原理:
1.利用import导入TransactionManagerConfigrationSelector
导入两个组件AutoProxyRegistrar
ProxyTransactionManagementConfigration
以上是 spring中的注解、xml标签 的全部内容, 来源链接: utcz.com/z/512862.html