Spring--IOC--AOP
Spring结构:
===============================================IOC===============================================
IOC容器是Spring框架的核心,管理Spring Beans的整个生命周期(从创建到销毁),主要包含两个不同类型的容器。ApplicationContext 容器包括 BeanFactory 容器的所有功能:
2、Spring ApplicationContext 容器
bean属性赋值方式:
通过构造器:可以为参数指定index、重载情况下可以指定参数类型
通过属性
通过p名称空间:
a、导入p名称空间
b、写带前缀的标签/属性
bean对象作用域:
静态工厂和实例工厂:
bean的后置处理器,bean无论是否有初始化方法,后置处理器都会默认其有,还会继续工作:
public class InitHelloWorld implements BeanPostProcessor{ public Object postProcessBeforeInitialization(Object bean,String beanName) { System.out.println("BeforeInitialization:"+beanName); return bean; // you can return any other object as well } public Object postProcessAfterInitialization(Object bean,String beanName) { System.out.println("AfterInitialization:"+beanName); return bean; // you can return any other object as well } }
spring管理连接池:
从配置文件中读取配置:
获取连接:
自动装配:
自动扫描:
@Autowired注解实现类型自动装配:
- 找到一个就装配,没有找到抛出异常,可以指定@Autowired(required=false)没有找到赋为null
- 当有个多个时(继承关系)按照变量名作为id继续匹(通常情况下不让spring使用变量名,使用@Qualifier("指定名称")),如果没有匹配上抛异常
- 方法上加注解
4.@Autowired和@Resource的区别
Spring单元测试:
泛型依赖注入:
============================================AOP============================================
AOP专业术语:
使用步骤:
1、导入包
2、添加注解配置,告诉spring哪个是切面类
3、告诉spring切面类中每个方法都是何时何地运行
切入点表达式:
4、 开启基于注解的AOP功能
基于xml配置AOP:
切入点表达式重用:
环绕通知:
实现AOP的两种动态代理模式:
面向接口(MyMathCalculator implements Calculator)时,是jdk帮我们创建的代理:
如果没有接口时,cglib帮我们创建代理:
AOP使用场景:
ApplicationContext和BeanFactory的区别: