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的垃圾回收机制销毁