Spring学习【Spring】

Rod Johnson编写

目标:使J2EE开发变得更加容易,通过启用基于 POJO 编程模型来促进良好的编程实践。

  • 依赖注入(DI)
  • 面向方面的程序设计(AOP):

常用注入方式

  1. 设值注入(自动调用java类的set方法)
  2. 构造注入(调用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 生命周期

  1. 定义
  2. 初始化
  3. 使用
  4. 销毁

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)
通过预编译方式和运行期动态代理实现程序功能的
统一维护的一种技术。

  1. 预编译(AspectJ)
  2. 运行期动态代理(JDK动态代理,CGLib动态代理)

作用

  1. 提供了声明式的企业服务器,替代EJB服务
  2. 允许用于定制自己的方面,已完成OOP与AOP的互补使用

SPring AOP不会与AspectJ竞争。

原文地址:https://www.cnblogs.com/shengwang/p/9721275.html