Rod Johnson编写
目标:使J2EE开发变得更加容易,通过启用基于 POJO 编程模型来促进良好的编程实践。
- 依赖注入(DI)
- 面向方面的程序设计(AOP):
常用注入方式
- 设值注入(自动调用java类的set方法)
- 构造注入(调用java类的构造方法)
Bean
id
Class
Scope
Constructor arguments
Properties
Autowiring mode
lazy-inintialization mode
initialization/destruction method
Bean 作用域
1.singleton 单例
2. peototype 每次请求创建一个新的实例
3. request
4. session
5. global session
Bean 生命周期
- 定义
- 初始化
- 使用
- 销毁
init方法、destroy方法
配置全局默认初始化、销毁例子。
Spring Aware
通过Aware接口,可以对Spring相应资源进行操作(一定要慎重)
ApplicationContextAware
BeanFactoryAware
Bean的自动转配(Autowiring)
No:不做任何操作
byname:根据属性名自动装配
byType:Type的注入和ID并没有什么关系
Constructor:
Resources
针对于资源文件的统一接口
UrlResource
ClassPathResource
FileSystemResource
...
ResouceLoader
classPath:
file:
http:
none
Bean管理的注解实现
ClassPath扫描与组件管理
@Configuration 配置类
@Bean 标一个用于配置和初始化一个由SpringIoC容器管理的新对象的方法
name、initMethod、destroyMehtod
@Import
@Autowired 依赖注入
@Servcie 标注一个业务逻辑组件类
@Repository 标注一个DAO组件类
@Controller 标注一个控制器组件类
@Component 标注一个普通的Spring Bean类
@Resource
元注解,基于注解,定义注解。
<context:component-scan base-package="org.example"
定义Bean@Service
作用域@Scope("Prototype") 表示每一次请求都会创建一个新的对象
@Required 注解适用于bean属性的setter方法
@Autowired 注解为“传统”的setter方法
@Qualifier 按类型自动装配可能多个bean实例的情况,可以使用Qualifier注解缩小范围(或指定唯一)
@Bean 标一个用于配置和初始化一个由SpringIoC容器管理的新对象的方法
@ImportResource 用于加载资源文件,用于将变量注解。
基于泛型的自动装配
AOP
AOP(Aspect Oriented Programming)
通过预编译方式和运行期动态代理实现程序功能的
统一维护的一种技术。
- 预编译(AspectJ)
- 运行期动态代理(JDK动态代理,CGLib动态代理)
作用
- 提供了声明式的企业服务器,替代EJB服务
- 允许用于定制自己的方面,已完成OOP与AOP的互补使用
SPring AOP不会与AspectJ竞争。