【Spring学习笔记(2):Bean的基础配置】

【Spring学习笔记(2):Bean的基础配置】,第1张

一、前言

前面学完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)

关于标签的功能、使用方式以及id和class属性的作用,我们通过一个表格详解。

类别    描述
名称bean
类型标签
所属beans标签
功能定义Spring核心容器管理的对象
格式

       

       

属性

列表

Id:bean中的id,使用容器可以通过id值获取对应的bean,在一个容器中id的值是唯一的,简称bean的唯一标识符

Class:bean的类型,即配置的bean的全路径类名,指定bean的具体实现类。

例子

2.1.2特别说明:

Class属性里面不能写接口!!!因为接口是没有办法创建对象的。一般情况下,Spring会直接使用new关键字来创建该Bean的实例。所以class类里必须提供bean实现类的类名。

2.1.3入门案例代码实现:

需求分析:将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的别名,可定义多个,使用逗号(,)分号(;)空格( )分隔
例子

2.2.1使用说明

步骤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:非单例

例子
2.3.1 验证IOC容器中对象是否为单例

验证思路:

同一个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);
    }
}

打印,观察控制台的打印结果:

 结论:

Spring创建的bean对象都是单例的

2.3.2配置bean为非单例 

(1)在Spring配置文件中,配置scope属性来实现bean的非单例创建

(2)在Spring的配置文件中,修改的scope属性

(3)将scope设置为singleton

运行AppForScope,打印看结果

(4)将scope设置为prototype

运行AppForScope,打印看结果

结论:使用bean的scope属性可以控制bean的创建是否为单例:

  • singleton默认为单例

  • prototype为非单例

 2.4Bean基础配置小结

关于Bean的基础配置中,需要掌握以下属性

        id="bean的唯一标识"

       

        scope="bean的作用范围,有singleton(默认)和prototype"

        name="为bean取的别名"/>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/919587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存