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开启AOP

2.@EnableAspectJAutoProxy会给容器中注册一个

AnnotationAwareAspectJAutoProxyCreator后置处理器

3.容器创建流程

1>注册后置处理器;

创键AnnotationAwareAspectJAutoProxyCreator

2>初始化剩下的bean

事务:

@EnableTransactionManagement  相当于xml中的<tx:annotation-driven>

注意:一定要配置事务管理器

原理:

1.利用import导入TransactionManagerConfigrationSelector

导入两个组件AutoProxyRegistrar

ProxyTransactionManagementConfigration

以上是 spring中的注解、xml标签 的全部内容, 来源链接: utcz.com/z/512862.html

回到顶部