Java框架spring Boot学习笔记(三):Bean的作用域

Spring 框架Bean支持以下五个作用域:

下面介绍两种作用域,singleton和protoype

singleton作用域

singleton作用域为默认作用域,在同一个ioc容器内getBean是同一个bean,如果创建一个singleton作用域Bean定义的对象实例,该实例将存储在该Bean的缓存中,那么以后所有针对该 bean的请求和引用都返回缓存对象。

编写HelloWorld.java

 1 package com.example.spring;
 2
 3 public class HelloWorld {
 4     private String message;
 5     public void setMessage(String message){
 6         this.message  = message;
 7     }
 8     public void getMessage(){
 9         System.out.println("Your Message : " + message);
10     }
11 }

编写Beans.xml,设置为singleton作用域

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5
6     <bean id="helloWorld" class="com.example.spring.HelloWorld" scope="singleton">
7     </bean>
8 </beans>

编写Application.java

 1 package com.example.spring;
 2
 3 import org.springframework.beans.factory.BeanFactory;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5
 6 public class Application {
 7     public static void main(String[] args) {
 8         //bean配置文件所在位置 D:\\IdeaProjects\\spring\\src\\Beans.xml
 9         //使用BeanFactory容器
10         BeanFactory factory = new ClassPathXmlApplicationContext("file:D:\\IdeaProjects\\spring\\src\\Beans.xml");
11         HelloWorld objA = (HelloWorld)factory.getBean("helloWorld");
12         objA.setMessage("I‘m object A");
13         objA.getMessage();
14         HelloWorld objB = (HelloWorld) factory.getBean("helloWorld");
15         objB.getMessage();
16     }
17 }

运行输出

Your Message : I‘m object A
12:06:56.273 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean ‘helloWorld‘
Your Message : I‘m object A

prototype作用域

如果作用域设置为 prototype,每次创建对象实例只针对当前实例配置Bean,getBean是不同的bean。

将上述的Beans.xml,设置为prototype作用域

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5
6     <bean id="helloWorld" class="com.example.spring.HelloWorld" scope="prototype">
7     </bean>
8 </beans>

运行输出:

Your Message : I‘m object A
13:52:03.767 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating instance of bean ‘helloWorld‘
13:52:03.767 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Finished creating instance of bean ‘helloWorld‘
Your Message : null

  

时间: 2024-10-02 10:00:00

Java框架spring Boot学习笔记(三):Bean的作用域的相关文章

Java框架spring Boot学习笔记(十一):bean管理(注解和配置文件混合使用)

配置文件和注解混合使用 创建对象操作使用配置文件方式实现 注入属性的操作使用注解方式实现 编写BookDao.java和OrderDao.java文件 BookDao.java 1 package com.example.spring; 2 3 public class BookDao { 4 public void book(){ 5 System.out.println("Book Dao."); 6 } 7 } OrderDao.java 1 package com.exampl

Java框架spring Boot学习笔记(十三):aop实例操作

使用aop需要在网上下载两个jar包: aopalliance.jar aspectjweaver.jar 为idea添加jar包,快捷键ctrl+shift+alt+s,打开添加jar包的对话框,将刚才下载好的jar添加进去 前置增强实例 编写TimeHandler.java 1 package com.example.spring; 2 3 public class TimeHandler { 4 public void beforTime() 5 { 6 System.out.printl

Java框架spring Boot学习笔记(七):基于构造函数的依赖注入

编写User.java 1 package com.example.spring; 2 3 public class User { 4 private String name; 5 private Integer age; 6 private String country; 7 8 public User(String name, Integer age, String country) { 9 this.name = name; 10 this.age = age; 11 this.count

Java框架spring Boot学习笔记(九):注入对象类型属性

使用set方法注入对象属性 编写UserDao.java文件 1 package com.example.spring; 2 3 public class UserDao { 4 public void print(){ 5 System.out.println("Dao print."); 6 } 7 } 编写UserService.java文件 1 package com.example.spring; 2 3 public class UserService { 4 //1.定义

Java框架spring Boot学习笔记(八):Spring相关概念

Spring是开源.轻量级.一站式框架. Spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码实现 ioc:控制反转,比如一个类,在类里面有方法(不是静态的方法),想要调用类里面的方法,一般的方法是创建对象(new一个),通过new出来的这个对象调用方法.而使用Spring框架时,对象的创建不是通过new出来,而是交给Spring配置创建类对象.

Java框架spring Boot学习笔记(十六):操作MySQL数据库

新建一个工程,添加对数据库的支持 下载mysql驱动包 mysql-connector-java-5.1.7-bin.jar,快捷键ctrl+alt+shift+s,添加jar包到工程 编写测试文JdbcTemplateDemo.java 1 package com.jdbc; 2 3 import org.junit.Test; 4 import org.springframework.jdbc.core.JdbcTemplate; 5 import org.springframework.j

Java框架spring Boot学习笔记(十四):log4j介绍

功能 日志功能,通过log4j可以看到程序运行过程的详细信息. 使用 导入log4j的jar包 复制log4j的配置文件,复制到src下面   3.设置日志级别 info:看到基本信息 debug:看到更详细的信息

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

Spring boot 学习笔记 (二)- 整合MyBatis

Spring boot 学习笔记 (二)- 整合MyBatis Spring Boot中整合MyBatis,并通过注解方式实现映射. 整合MyBatis 以Spring boot 学习笔记 (一)- Hello world 为基础项目,在pom.xml中添加如下依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter&l