BeanFactory与FactoryBean

BeanFactory定义Spring IoC容器,FactoryBean代表一种模式。

BeanFactory

BeanFactory定义了IOC容器的行为与应遵守的规范,负责管理对象生命周期。

获取ioc容器中所有bean对象,可通过ListableBeanFactory接口。

ListableBeanFactory接口

getBeanDefinitionNames()方法,可获取当前factory中所有bean的名字,接口实现类能枚举所有bean实例。

FactoryBean

FactoryBean是一种模式的实现,封装对象创建逻辑。

若需自定义对象创建过程,可创建一个类实现FactoryBean,在接口实现方法中编写对象创建代码,创建的对象依然能被spring容器管理。

具体参见示例

AOP概念

AOP是种编程范例,旨在分离横切关注点增强系统模块化。

不修改代码的基础上向现有代码添加行为。

作为面向对象编程的一种补充,常用于处理具有横切性质的系统级服务。

AOP实现关键在于AOP代理,代理分为静态和动态两种:

静态代理使用AOP框架提供的命令执行编译(如:AspectJ),在编译阶段生成代理类,称为编译时增强。

动态代理在运行时借助于jdk动态代理、cglib等工具,在内存中生成代理类,称为运行时增强。

Spring AOP

Spring aop由spring IoC容器负责生成、管理、调用。

Spring AOP Annotation

首先自定义一个annotation,然后定义切面(Aspect),在切面中定义通知(advice),最终将切入点(pointcut)指向annotation。

最后在目标方法上应用annotation。

具体参见完整示例代码。 

Spring AOP应用范围

Authentication(权限)、Caching(缓存)

Context passing(内容传递)、Error handling(错误处理)

Lazy loading(懒加载)、Debugging(调试)

logging、tracing、profiling and monitoring(记录跟踪 优化 校准)

Performance optimization(性能优化)

Persistence(持久化)、Resource pooling(资源池)、Synchronization(同步)、Transactions(事务)