spring核心概念介绍
-
IOC(核心中的核心): incerse of contol 控制反转。对象的创建权力由程序反转给spring框架。
-
DI: Dependency injection,依赖注入。在spring框架负责创建对象时,动态的将依赖对象注入Bean组件中。
-
AOP: Aspect Oriented programming, 面向切面编程,在不修改目标对象的源代码情况下,增强IOC容器中的Bean的功能。
-
Spring容器:指的是IOC容器,底层也就是一个BeanFactory.
核心基础篇
IOC配置
在spring的xml文件中通过一个bean标签,完成IOC的配置。
bean标签介绍
- bean标签作用:用户配置被spring容器管理的bean的信息。默认情况下它调用的是类中的无参构造函数实例化。如果没有无参构造则不能创建成功。
- bean标签属性:
- id:给对象在容器中提供一个唯一标识,用于获取对象。
- class: 指定类的全限定名。用于反射创建对象。默认情况下调用无参构造函数。
- init-moth:指定类中的初始化方法名称。
- destroy-method:指定类中销毁方法名称。比如dataSource的配置中一般需要指定destroy-method = 'close'。
- scope:指定对象作用范围
- singletion:默认值,单例的,生命周期如下:
- 对象出生:当应用加载,创建容器时,对象就被创建了。
- 对象活着:只要容器在,对象一直或者。
- 对象死亡:当应用定制,销毁容器时,对象就被销毁了。
- prototype:多例的,每次访问对象时,都会重新创建对象实例。生命周期如下:
- 对象出生:当使用对象时,创建新的对象示例。
- 对象活着:只要对象在使用,就一直存活着。
- 对象死亡:当对象长时间不用时,被java的垃圾回收器回收了。
- request:将spring创建的bean对象存入到request域中。
- session:将spring创建的bean对象存入到session域中。
- global seession:WEB项目中,应用在portlet环境。如果没有Portlert环境那么globalSession相当于session.
- singletion:默认值,单例的,生命周期如下:
DI配置
DI介绍
依赖指的时Bean示例中的属性。当我们将对象的实例化交给spring来管理时(IOC)。对象的属性赋值同样需要交给bean来实现。简单来说就是依赖注入是IOC的具体实现。
依赖注入方式
- 构造函数注入(需要配置文件配置)
顾名思义,就是通过有参构造函数,给成员变量赋值。注意:赋值的操作不是我们做得,而是通过配置的方式,让spring框架来为我们注入。
- set方法注入
- 手动装配方式(XML方式):需要配置bean标签的子标签property,需要配置bean中指定的setter方法。
- 自动装配方式(注解方式):
- @Autowired: 根据bean的类型从容器中获取实例并给另一个实例的属性赋值。注意:一个java类型在同一个spring容器中只能存在一个示例。
- @Resource: 根据bean的名称从容器中获取实例并给另一个
- @Inject: 使用p名称空间注入数据