目录
1.1首先我们先新建一个maven项目(搭建的内容和前面的案例一样)
1.2,打开spring的配置文件applicationContext.xml
(1)在Spring的配置文件中,修改的scope属性,并将scope设置为singleton
(2)在Spring的配置文件中,修改的scope属性,并将scope设置为prototype
前言
在第一章的时候,我们初步认识了Spring,了解其系统架构 以及 IOC(控制反转)的概念,IOC容器,Bean和DI(依赖注入),并且写了两个案例去理解,详细可以看看前一天发布的文章。
文章链接:第一章 Spring-CSDN博客
1,Bean基础配置(id和class)
1)bean的别名配置
1.1首先我们先新建一个maven项目(搭建的内容和前面的案例一样)
内容如下:
1.2,打开spring的配置文件applicationContext.xml
<!--name:为bean指定别名,别名可以有多个,使用逗号,分号,空格进行分隔-->
<bean id="bookService" name="service1 service bookEbi" class="com.hw.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"></property>
</bean>
<!--scope:为bean设置作用范围,可选值为单例singloton,非单例prototype-->
<bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl"/>
</beans>
说明:Ebi全称Enterprise Business Interface,翻译为企业业务接口
1.3 根据名称容器获取bean对象
public class Test {
public static void main(String[] args) {
//读取spring的配置文件,创建出IOC容器,并把所有的Bean对象创建出来放到IOC容器中去
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
//获取service层对象
//Object bookService = context.getBean("bookService");
//强制转换
//此处根据bean标签的id属性和name属性的任意一个值来获取bean对象
BookService bookService = (BookService) context.getBean("bookService");
bookService.save();
}
}
1.4运行结果
运行结果:book service save ...
注意: bean依赖注入的ref属性指定bean,必须在容器中存在
假如不存在,则会发生下列情况:
报错 :No bean named 'bookService666' available(“service666”的bean不可用)
2)bean的作用范围space配置
1.验证IOC容器中的对象是否为单例
public class Test {
public static void main(String[] args) {
//读取spring的配置文件,创建出IOC容器,并把所有的Bean对象创建出来放到IOC容器中去
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
BookDao bookDao1 = (BookDao) context.getBean("bookDao");
BookDao bookDao2 = (BookDao) context.getBean("bookDao");
System.out.println(bookDao1);
System.out.println(bookDao2);
}
}
发现,控制台输出的两个对象地址相同
结论:默认情况下,spring创建出来的bean对象都是单例的
2.bean(单例和非单例)
(1)在Spring的配置文件中,修改<bean>的scope属性,并将scope设置为singleton
<bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl" scope="singleton"/>
结果:打印出来的地址相同
(2)在Spring的配置文件中,修改<bean>的scope属性,并将scope设置为prototype
<bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl" scope="prototype"/>
运行结果:两个对象的地址不同了
博主累了,剩下的看心情再更新吧,哥们真不想敲代码了。。。。。。。。。。