spring 核心特性:依赖注入和AOP
依赖注入:在创建对象的时候,系统会协调设定这个对象所依赖的第三方组件,对象无需关注和管理第三方组件。
AOP:面向切面编程,为了系统各项互相协调的服务松耦合。例如事务管理,日志管理,安全管理等。
Spring 容器:beanFactory 应用上下文Context。
应用上下文Context:
AnnotationConfigApplicationContext 基于java的配置类中加载Spring应用的上下文
AnnotationConfigWebApplicationContext 基于java的配置类中加载Spring Web应用的上下文
ClassPathXmlApplicationContext 从类路径加载xml的spring上下文
XmlWebApplicationContext 从web应用下加载xml的Spring上下文
装配Bean:
自动化配置:java配置类使用注解@ComponentScan,如果是xml实现上下文,使用标签<context:component-scan></context:component-scan>,先开启自动化扫描包下面的类。相关注解@Component,@Service等注解
基于java的显示配置:主要是使用@Bean注解
基于xml的显示配置:主要是使用<bean class="com.xxx.xxx"></bean>
Bean的生命周期:
1. 实例化bean
2. 注入bean相关引用
3. 如果实现了beanNameAware接口,调用setBeanName方法
4. 如果实现了beanFactoryAware接口,调用setBeanFactory方法
5. 如果实现了ApplicationContextAware接口,调用setApplicationContext方法
6. 如果实现了beanPostProcessor接口,调用postProcessorBeforeXXXX方法
7. 如果实现了initializingBean接口或者配置了<init-methid>标签,调用afterPropertieSet方法
8. 如果实现了beanPostProcessor接口,调用postProcessorAfterXXXX方法
9. 这个时候,该bean可以为应用使用了。
10.如果实现了disposableBean接口或者配置了<destory-method>标签,调用destory方法
AOP理解:面向切面编程
通知(advice):前置通知,后置通知,返回通知,异常通知,环绕通知
连接点(Join point):应用中可以 应用通知的时机都叫连接点。
切点(pointcut):部分需要被通知的连接点。
切面(aspect):通知 + 切点 构成切面。
引入(introduction):现有类中添加新的方法和属性,使现有类有新的行为和状态。
织入(waving):把切面应用到目标对象,并创建新的代理对象的过程。织入时机:编译期(aspectJ的编译器),类加载期(AspectJ 5),运行期(Spring AOP)
网友评论