Spring实战读书笔记

Spring-core

Spring之旅 - DI 和 AOP 概念

Spring的核心策略

容纳你的Bean

Bean的生命周期

装配Bean - 拼装应用组件

Spring 配置的可选方案

高级装配

环境与profile

处理自动化装配歧义性

Bean作用域

默认情况下所有的bean都是单例注入的,Spring定义了多种作用域

使用@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

>* Singleton

>* Prototype 每次注入或者获取都会获得一个新的实例

>* Session 每个会话创建一个bean实例

> 使用proxyMode(作用域代理)来生成代理 实现懒加载 并且 注入真正会话对应的 Bean

>* Request 在Web应用中每个请求创建一个实例

使用XML配置作用域(了解)

运行时值注入

属性占位符 和 SqEL。

面向切面 - 如何使用AOP解耦

软件开发中很多应用被称为横切关注点,AOP实现横切关注点和业务逻辑代码的分离。

什么是面向切面编程

切面实现了横切关注点的模块化,使得每个关注点都集中在一个地方,其次,服务模块只包含核心功能代码,次要代码被转移到切面中。

AOP术语

  • pointcut 通知定义了切面的“什么”和“何时”的话,那么切点就定义了“何处”
  • joinpoint 连接点是在应用执行过程中能够插入切面的一个点,调用切点的时机。
  • Spring对AOP的支持

通过代理类封装目标类,拦截调用目标类的消息。直到真正需要被代理的bean的时候,Spring才创建代理对象。

通过切点来选择连接点

使用注解创建切面

@Aspect
public class Audience{
@Pointcut("execution(* concert.Performance.perform(..))")
public void performance(){} @Around("performance()")
public void watchPerformance(ProceedingJoinPoint jp){
try{
System.out.println("Silencing cell phones");
jp.proceed();
System.out.println("CLAP");
}
catch(Throwable e){
System.out.println("Demanding a refund");
}
}
}
@PointCut("performacne()" + "&& args(trackNumber)")
public void trackPlayed(int trackNumber);

通过注解添加新的功能

在XML中声明切面(了解)

04-30 02:26