-
Spring注入概念:指在启动Spring容器加载bean配置的时候,完成对变量的复制行为。(扫描xml文件中的bean标签时,实例化对象的同时,完成成员变量的赋值)
Spring常用的注入方式:
设值注入:通过一个属性或者成员变量的Set方法进行注入
<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<property name="injectionDAO" ref="injectionDAO"/>
</bean>
<bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl">
</bean>
构造注入
<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<constructor-arg name="injectionDAO" ref="injectionDAO"/>
</bean>
<bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl">
</bean>
查看全部 -
Spring Bean作用域,常用:singleton(默认)、prototype
Spring Bean常用配置项
Id:在整个IOC容器中Bean的唯一标识
Class:具体实例化的哪一个类
Scope:作用域
Constructor arguments:构造器的参数
Properties:Bean的属性
Autowiring mode:自动装配模式
Lazy-initialization mode:懒加载模式
Initialization/destruction method:初始化/销毁 方法查看全部 -
Bean的生命周期
定义、初始化、使用、销毁
初始化和销毁都有两种方法:
直接实现spring中某个接口如 DisableBean,覆盖destroy方法
配置init-method 或destroy-method,指向某个方法
或 配置全局的default intitle-method(优先级最低,其他两种方法配置了的时候,默认方法无效)
查看全部 -
default-init-method="defaultStart" default-destroy-method="defaultStop"><!--定义所有bean的全局初始化和摧毁方法,bean可以没有全局初始化和摧毁方法 -->
<bean id="beanLifeCycle" class="xjh.bean.BeanLifeCycle" init-method="start" destroy-method="stop"></bean><!-- 1.全局的初始化和摧毁方法不生效 2.不可以没有初始化和摧毁方法-->
public void afterPropertiesSet() throws Exception {//方法将在所有的属性被初始化后调用,但是会在init前调用,但是主要的是如果是延迟加载的话,则马上执行
public void afterPropertiesSet() throws Exception {//方法将在所有的属性被初始化后调用,但是会在destroy前调用,但是主要的是如果是延迟加载的话,则马上执行
查看全部 -
xml方式的Bean自动注入(<beans>标签的属性default-autowire=byName)
No:不做任何操作,默认选项。
byname:根据setXXX()方法的set后的名称进行自动注入(首字母不区分大小写)。查找xml中有没有<bean>标签id的名称与属性完全一致的,如果有则自动注入,并且执行set方法,基于set方法,如果没有不报错,该属性置为NULL,并且不执行set()。
byType:根据类型自动注入,如果容器中存在一个与指定属性类型相同的bean,那么该属性自动注入;如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配,如果没有找到相匹配的bean,则什么事都不发生,该属性置为null基于set方法。
Constructor:与byType方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一个bean,那么抛出异常。
查看全部 -
Bean的作用域
singleton:单例,指一个Bean 容器中只存在一份。
prototype:每次请求创建新的实例,destroy方式不生效
request:每次http请求创建一个实例且仅在当前request内有效
session:同上,每次http请求创建一个实例且仅在当前session内有效
global session:基于portlet的web中有效
查看全部 -
配置destroy-method
实现org.springframework.beans.factory.DisposableBean接口,覆盖afterPropertiesSet方法
查看全部 -
Bean的作用域
singleton:单例,指一个Bean 容器中只存在一份。
prototype:每次请求创建新的实例,destroy方式不生效
request:每次http请求创建一个实例且仅在当前request内有效
session:同上,每次http请求创建一个实例且仅在当前session内有效
global session:基于portlet的web中有效
查看全部 -
Spring注入
Spring注入是指在启动Spring容器加载bean 配置的时候,完成对变量的赋值行为。
常用的注入方式
设值注入
构造注入
查看全部 -
Bean的生命周期
查看全部 -
@Scope("prototype") @Repository public vlass MovieFinderImple implements MovieFinder { // ... }
通过@Scope的方式来标识Bean的作用域
<bean> <context:component-scan base-package="org.example" scope-resolver="org.example.MyScopeResolver" /> </beans>
实现ScopeMetadataResolver接口并提供一个无参构造器
查看全部 -
IOC:控制反转。
查看全部 -
default-init-method="defaultStart" default-destroy-method="defaultStop"><!--定义所有bean的全局初始化和摧毁方法,bean可以没有全局初始化和摧毁方法 -->
<bean id="beanLifeCycle" class="xjh.bean.BeanLifeCycle" init-method="start" destroy-method="stop"></bean><!-- 1.全局的初始化和摧毁方法不生效 2.不可以没有初始化和摧毁方法-->
public void afterPropertiesSet() throws Exception {//方法将在所有的属性被初始化后调用,但是会在init前调用,但是主要的是如果是延迟加载的话,则马上执行
查看全部 -
面向接口编程查看全部
-
什么是接口
查看全部
举报