Spring框架的知识点复习
    Spring框架的知识点总结
 
1.1. spring框架是一个开源的J2EE应用框架,是管理bean的生命周期的轻量级容器.
 
1.2. IOC,即控制反转,将对象的创建权利交给spring框架完成,由容器管理对象的生命周期.解决了框架和框架之间耦合性问题.
 
- 1.2.1 容器的数据结构: K-V Map<K,V> key=bean中的ID, value=反射机制实例化的对象.
 - 注解 
  
- @Configuration 标识当前类是配置类
 - @ComponentScan 包扫描注解 扫描注解
 - @Bean 标识该方法的返回值交给Spring容器管理
 - @Scope 控制多例和单例 
     
 - @Lazy 懒加载 
     
 
  - 1.2.2 spring对象的生命周期 
  
- 生命周期说明 
     
 - 注解 
    
- @PostConstruct 标识初始化方法
 - @PreDestroy 标识销毁方法.
 
  
  - 1.2.3 Spring管理对象
 @Component 将当前类未来的对象交给容器管理 
 
1.3 Spring-DI 依赖注入
 
- 注入方式: 
  
- 通过set方法为属性赋值. property
 - 通过构造方法为属性赋值. constructor-arg
 - @Autowired 自动注入
 
  - 注解: @Autowired
 * 默认情况下采用类型注入. 一般条件下一个接口一个实现类
 * 也可以按照名称进行注入. 
 
1.4 Spring层级代码结构
 
- Controller层 @Controller
 - Service层 @Service
 - Dao/Mapper层 @Repository
 - POJO 根据数据表定义的实体对象
 
 
1.5 AOP,即面向切面编程,在不修改原有代码的条件下对方法进行扩展.使得业务逻辑各部分之间的耦合度降低.
 
- 连接点 切入点 Advice 切面 编织
 - 1.5.1 动态代理:使用代理对象和使用目标对象看起来一模一样
 - 1.5.2 JDK动态代理 
  
- JDK动态代理是JDK源码提供的,无需导入额外的jar包.
 - JDK代理对象要求实现和被代理者相同的接口,必须有接口
 - JDK代理创建速度快,运行时稍慢
 
  - 1.5.3 CGLIB动态代理 
  
- cglib动态代理需要导入额外的包,才能使用.
 - cglib 要求被代理者有无接口都可以, 但是cglib代理对象是目标对象的子类. (继承)
 - cglib创建代理对象时慢,但是运行期速度快.
 
  - 1.5.4 注解: 
  
- @Aspect 标识当前类是一个切面
 - @Pointcut 标识切入点表达式
 - @Before 通知注解
 - @EnableAspectJAutoProxy 让AOP有效
 
  - 1.5.5 切入点表达式 --配置AOP为谁创建代理对象 
  
- @Pointcut(" bean(“对象的ID”) ")
 - @Pointcut(“within(包名.类名)”)
 - @Pointcut(“execution(返回值类型 包名.类名.方法名(参数列表))”)
 
  - 1.5.6 通知方法 
  
- 一般记录程序的运行状态. 
    
- @Before AOP-前置通知
 - @AfterReturning AOP-后置通知
 - @AfterThrowing AOP-异常通知
 - @After AOP-最终通知
 
  - 控制目标方法是否运行