Spring工程的创建
1、创建maven工程
2、注入依赖


org.springframework
 spring-context
 5.0.2.RELEASE


3、创建bean.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!--把对象的创建交给spring来管理-->
<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>

<bean id="accountDao" class="com.itheima.dao.impl.AccountDaoImpl"></bean>

1 2 3 4 5 6 7 8 9 10 11 4、创建对象 //获取核心容器对象 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml"); //根据id获取对象 IAccountService accountService=applicationContext.getBean("accountService", IAccountService.class); 1 2 3 4 ApplicationContext的三个常用的实现类:

ClassPathXmlApplicationContext:他可以加载类路径下的配置文件,要求文件必须咋类路径下。

FileSystemXmlApplicationContext:他可以加载磁盘下任意路径的文件

AnnotationConfigApplicationContext:用于读取注解创建容器

核心容器两个接口的区别:

ApplicationContext 适用于单例对象:

创建对象采取的是立即加载的策略,只要一读取完就马上创建对象

BeanFactory 使用于多利对象:

创建对象采取的是延迟加载的策略,也就是说什么时候根据id获取对象了什么时候创建对象

Resource resource=new ClassPathResource(“bean.xml”);
BeanFactory beanFactory=new XmlBeanFactory( resource);
IAccountService iAccountService=(IAccountService) beanFactory.getBean(“accountService”);

System.out.println(iAccountService);


Spring对Bean管理的细节
创建Bean对象的三种方式
1、使用默认构造函数创建

在Spring配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签,采用的就是默认构造函数创建对象,此时如果没有默认构造函数则对象无法创建。

2、使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)

此种方式使用于当要创建的对象的类在jar包中且不能通过构造函数创建对象时使用

其中class为能够创建accountService对象的方法所在类的全限定类名

factory-method为方法名


3、使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象)

init-method 对象创建时执行的方法

destory-method 对象销毁时执行的方法

1
Bean的作用范围
bean的scope属性:用于指定bean的作用范围

singleton:创建单例对象 默认值

prototype:创建多例对象

request:作用于web应用的请求范围

session :作用于web应用的会话范围
global-session:作用于集群环境的会话范围(全局会话范围) 当不是集群环境是就是session

Bean的生命周期
单例对象:

出生:容器创建时出生

活着:只要容器存在,就一直活着

死亡:容器销毁,对象消亡

多例对象

出生:当我们使用时Spring为我们创建

活着:对象只要在使用过程中就一直活着

死亡:当对象长时间不用,且没有别的对象引用时,由java的垃圾回收机制销毁