zoukankan      html  css  js  c++  java
  • Java框架spring 学习笔记(二):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
    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
    Your Message : null
    

      

  • 相关阅读:
    ==和equals区别
    如何创建一个不可变类
    mysql用户的创建和授权
    事务
    Java知识点检测
    Redis
    正则表达式中match的用法
    rfind的用法
    找出文件夹里所有的文件路径
    合并多个pdf文件
  • 原文地址:https://www.cnblogs.com/zylq-blog/p/7792825.html
Copyright © 2011-2022 走看看