前面学完Spring之后知道,Spring框架的核心功能有两个:①Spring容器负责创建、管理所有的Java对象,然而这些Java对象被称为Bean。②Spring容器管理容器中Bean之间的依赖关系,Spring使用一种被称为"依赖注入"的方式来管理Bean之间的依赖关系。对于开我们这些开发者而言,使用Spring框架主要是做两件事:①开发Bean;②配置Bean。对于Spring框架来说,就是根据配置文件来创建Bean实例,并调用Bean实例的方法完成"依赖注入"。
二、Bean的定义Bean是一个由Spring IoC容器实例化、组装和管理的对象。
2.1.1 Bean的基础配置(id和class)
关于
类别 | 描述 |
名称 | bean |
类型 | 标签 |
所属 | beans标签 |
功能 | 定义Spring核心容器管理的对象 |
格式 | |
属性 列表 | Id:bean中的id,使用容器可以通过id值获取对应的bean,在一个容器中id的值是唯一的,简称bean的唯一标识符 Class:bean的类型,即配置的bean的全路径类名,指定bean的具体实现类。 |
例子 | |
2.1.3入门案例代码实现:Class属性里面不能写接口!!!因为接口是没有办法创建对象的。一般情况下,Spring会直接使用new关键字来创建该Bean的实例。所以class类里必须提供bean实现类的类名。
需求分析:将BookServiceImpl和BookDaoImpl交给Spring管理,并从容器中获取对应的bean对象进行方法调用。
(1)在IDEA中创建Maven项目
(2)在pom.xml中添加Spring依赖的jar包
(3)创建BookService、BookServiceImpl、BookDao和BookDaoImpl四个类
(4)在resource文件夹里面添加Spring的配置文件,完成Bean的配置
(5)使用Spring提供的接口完成IOC容器的创建
(6)从容器中获取对象进行方法的调用
步骤1:在IDEA中创建Maven项目
步骤2:在pom.xml中添加Spring依赖的jar包
org.springframework
spring-context
5.2.10.RELEASE
junit
junit
4.12
test
步骤3:创建BookService、BookServiceImpl、BookDao和BookDaoImpl四个类
步骤4:在resource文件夹里面添加Spring的配置文件,完成Bean的配置
resources下添加Spring配置文件applicationContext.xml,并完成Bean的配置
步骤5: 在配置文件中完成bean配置
步骤6:获取IOC容器
使用Spring提供的接口完成IOC容器的创建,创建App类,编写main方法
public class App {
public static void main(String[] args) {
//获取IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
步骤7:从容器中获取对象进行方法调用
public class APP2 {
public static void main(String[] args) {
//3.获取IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//4.获取bean
//BookDao bookDao =(BookDao) ctx.getBean("bookDao");
//bookDao.save();
BookService bookService = (BookService) ctx.getBean("bookService");
bookService.save();
}
}
步骤8:运行程序
测试结果为:
2.2 Bean中的name属性类别 | 描述 |
名称 | name |
类型 | 属性 |
所属 | bean标签 |
功能 | 定义bean的别名,可定义多个,使用逗号(,)分号(;)空格( )分隔 |
例子 | |
步骤1:配置别名
打开Spring的配置文件applicationContext.xml
说明:Ebi全称Enterprise Business Interface,翻译为企业业务接口
步骤2:根据名称容器中获取bean对象
public class AppForName {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//此处根据bean标签的id属性和name属性的任意一个值来获取bean对象
BookService bookService = (BookService) ctx.getBean("service4");
bookService.save();
}
}
步骤3:运行程序
2.3Bean中的scope配置关于Bean的作用范围是Bean属性配置的一个重点内容
先通过表格看下Bean作用范围的配置属性:
类别 | 描述 |
名称 | scope |
类型 | 属性 |
所属 | bean标签 |
功能 | 定义bean的作用范围,可选范围如下 (1)singleton:单例(默认) (2)prototype:非单例 |
例子 |
验证思路:
同一个bean获取两次,将对象打印到控制台,看打印出的地址值是否一致。
具体实现:
创建一个AppForScope的类,在其main方法中来验证。
public class AppForScope {
public static void main(String[] args) {
ApplicationContext ctx = new
ClassPathXmlApplicationContext("applicationContext.xml");
BookDao bookDao1 = (BookDao) ctx.getBean("bookDao");
BookDao bookDao2 = (BookDao) ctx.getBean("bookDao");
System.out.println(bookDao1);
System.out.println(bookDao2);
}
}
打印,观察控制台的打印结果:
结论:
2.3.2配置bean为非单例Spring创建的bean对象都是单例的
(1)在Spring配置文件中,配置scope属性来实现bean的非单例创建
(2)在Spring的配置文件中,修改
(3)将scope设置为singleton
运行AppForScope,打印看结果
(4)将scope设置为prototype
运行AppForScope,打印看结果
2.4Bean基础配置小结结论:使用bean的
scope
属性可以控制bean的创建是否为单例:
singleton
默认为单例
prototype
为非单例
关于Bean的基础配置中,需要掌握以下属性
id="bean的唯一标识"
scope="bean的作用范围,有singleton(默认)和prototype"
name="为bean取的别名"/>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)