`

spring配置文件中的scope详解以及代码

    博客分类:
  • java
 
阅读更多

1bean有5种预定义作用域:

1.1singleton:请求都只会返回唯一的bean,传统的模式,要为每一个单独实例编写代码,spring以容器的功能直接提供单实例,很方便
           应用:应为spring有面向切向的特点,所以DAO这些类都可以做成单实例模式
     
     spring因为localThread和面向切向,使得非线程安全的类可以变成线程安全的类,因此默认作用域就是singleton.

1.2.prototype:每次请求都创建一个新的bean对象,所以spring初始化是不会实例化prototype这种bean的

1.3.request跟http请求对应,http中的request没了,作用域为request的bean也会被销毁
1.4.session 跟http请求对应,http中的session没了,作用域为session的bean也会被销毁
1.5.global session

 

 

2.代码演示singleton和prototye的区别

 

2.1目录结构

 

2.2代码目的,Boss类调用Car类的对象,不同配置会有不同结果

设置scope为prototype

<bean id="car" class="com.jike.spring.chapter04.scope.Car" scope="prototype"/>

那么每次都会创建一个新的Car()对象

 

设置scope为singleton或者不设置(默认为singleton)

<bean id="car" class="com.jike.spring.chapter04.scope.Car" scope="singleton"/>

那么每次都是调用的同一个Car()对象

 

2.3 Boss.java

package com.jike.spring.chapter04.scope;

public class Boss {
    private String name ;
    private Car car;
    public Boss(){
    }
    public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}


    public String toString() {
    	return "name:"+name+"\n car:"+car;
    }
}

 

 

2.4 Car.java

package com.jike.spring.chapter04.scope;

public class Car {

	private String color;
	private String brand;
	private double price;

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

}

 

 

2.5 Main.java

package com.jike.spring.chapter04.scope;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

	public static void main(String[] args) {
		//xml的文件路径名很重要,犯了一个错误,com.jike这种格式是错误的,一定要换成com/jike,把.换成/
		BeanFactory beanFactory = new ClassPathXmlApplicationContext("com/jike/spring/chapter04/scope/conf-scope.xml");
		
		Boss boss1 = beanFactory.getBean("boss1", Boss.class);
		Boss boss2 = beanFactory.getBean("boss2", Boss.class);
		Boss boss3 = beanFactory.getBean("boss3", Boss.class);
		System.out.println(boss1.getCar());
		System.out.println(boss2.getCar());
		System.out.println(boss3.getCar());
	}
	
}

 

2.6 scope-config.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
         
   <bean id="car" class="com.jike.spring.chapter04.scope.Car" scope="prototype"/><!--scope变成singleton,那么测试返回的就是同一个car对象  -->
   <bean id="boss1" class="com.jike.spring.chapter04.scope.Boss" p:car-ref="car" />
   <bean id="boss2" class="com.jike.spring.chapter04.scope.Boss" p:car-ref="car" />
   <bean id="boss3" class="com.jike.spring.chapter04.scope.Boss" p:car-ref="car" />
</beans>

 

2.7结果对比

设置为singleton

 

com.jike.spring.chapter04.scope.Car@1a5fe33
com.jike.spring.chapter04.scope.Car@1a5fe33
com.jike.spring.chapter04.scope.Car@1a5fe33

 

 

设置为prototype

com.jike.spring.chapter04.scope.Car@7740a2
com.jike.spring.chapter04.scope.Car@1a5fe33
com.jike.spring.chapter04.scope.Car@3108bc

 

  • 大小: 5.5 KB
分享到:
评论

相关推荐

    Spring配置文件详解1

    下面我们将深入探讨Spring配置文件中的关键知识点。 首先,我们来看`&lt;context:component-scan&gt;`标签,它用于开启注解扫描。这个标签告诉Spring去寻找特定包下的所有使用了Spring注解(如@Service、@Repository、@...

    详解Spring中bean的scope以后使用

    为了启用Request作用域,需要在Web应用的配置文件中添加`RequestContextListener`监听器。以下是配置示例: ```xml &lt;listener-class&gt;org.springframework.web.context.request.RequestContextListener ``` ...

    spring配置详解

    一、Spring配置文件基础 `applicationContext.xml`是Spring应用上下文的主要配置文件,用于定义bean的实例化、依赖关系以及其行为。在文件中,我们通常会看到如下的基本结构: ```xml &lt;beans xmlns="http://www....

    spring注解使用详解

    在使用注解之前,Spring通常通过XML配置文件来声明和管理Bean以及它们之间的依赖关系。例如,`Office`、`Car`和`Boss`三个类,需要在`beans.xml`中分别声明为Bean,并通过`&lt;property&gt;`标签注入依赖: ```xml &lt;!--...

    Spring基于xml文件配置Bean过程详解

    Bean的配置文件是Spring框架的核心组件之一,它定义了Bean的创建过程,包括Bean的类名、属性、构造器参数、依赖关系等信息。在xml文件中,我们可以使用元素来定义一个Bean,该元素有多个属性,例如id、class、scope...

    Spring Annotation (注解)详解

    - **减少XML配置** - 使用注解,我们可以避免在单独的XML配置文件中定义Bean及其依赖关系,使得代码更加紧凑且易于阅读。 - **增强内聚性** - 注解与Java代码在同一文件,降低了在不同文件间切换查找配置的需要,...

    RED5配置文件详解

    RED5配置文件详解 RED5是一个开源的流媒体服务器,基于Jetty6(Servlet引擎)和Mina(网络编程库)构建,并集成了Spring框架。本文档旨在帮助初学者理解和配置RED5服务器的关键文件,以确保顺利运行和自定义设置。 ...

    spring注释详解

    自Spring 2.5版本起,Spring引入了注释驱动的配置,使得开发者可以通过在类和方法上添加注释来替代传统的XML配置文件。这种方式极大地简化了配置过程,提高了开发效率,也增强了代码的可读性和内聚性。本文将深入...

    SSH整合的配置文件详解

    **Spring配置文件** —— Spring的bean定义 Spring的配置文件通常位于`WEB-INF`目录下,如`applicationContext.xml`,用于定义bean的实例化和依赖注入。例如,定义一个PetAction bean: ```xml ``` 此处,`/...

    struts+spring+ibaits配置详解

    根据给定的部分内容来看,本文将着重介绍 Spring 配置文件中的相关内容,特别是数据源、SQL 映射客户端、事务管理器以及事务属性源的配置。 ##### 1. 数据源 DataSource 配置 ```xml &lt;value&gt;...

    spring3.0依赖注入详解

    在Spring 3.0中,基于Annotation的依赖注入成为了主要的依赖管理方式,它允许开发者直接在类或方法级别应用注解,而无需在XML配置文件中进行繁琐的bean定义。这一改进不仅减少了配置的工作量,还增强了代码的可读性...

    pring配置文件共5页.pdf.zip

    《Spring配置文件详解——共五页》 在Java开发领域,Spring框架无疑是最为重要的工具之一,它以其强大的依赖注入和面向切面编程能力,极大地简化了企业级应用的开发。本篇文档将深入探讨Spring配置文件的核心概念,...

    dwr配置文件详解

    配置文件`dwr.xml`是DWR的核心配置,用来定义哪些Java对象可以被远程访问,以及如何转换这些对象以适应JavaScript环境。 在DWR配置文件中,主要分为以下几个部分: 1. **DOCTYPE声明**: 首先,`&lt;!DOCTYPE&gt;`声明...

    DWR配置文件详解

    ### DWR配置文件详解 #### 一、基本概念与术语 在深入了解DWR配置文件之前,我们首先需要明确几个核心概念: 1. **参数转换**(Conversion):DWR能够处理客户端与服务器端的数据交互,这包括将客户端的...

    SSH三大框架所有的配置文件详解

    在实际应用中,正确理解和配置这些框架的配置文件至关重要。以下是对SSH框架配置文件的详细解析。 1. **Struts框架配置文件**: - `struts-config.xml`:这是Struts的核心配置文件,用于定义Action和ActionForm,...

    详解Spring中Bean的生命周期和作用域及实现方式

    1. 使用XML配置文件:可以在XML配置文件中配置Bean的生命周期和作用域。 2. 使用Annotation配置:可以使用Annotation来配置Bean的生命周期和作用域。 3. 使用Java配置:可以使用Java代码来配置Bean的生命周期和作用...

    DWR配置文件详解,DWR配置

    **DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...

    SpringCloud配置.docx

    配置文件是Spring Cloud应用的核心组成部分之一,主要用于设置服务的各项参数。配置文件可以使用YAML或Properties格式。 1. **配置文件位置** - 在`src/main/resources`目录下创建`application.yml`或`application...

    ssh架构配置文件配置

    `applicationContext.xml`是Spring框架的核心配置文件之一,用于定义Bean以及它们之间的依赖关系。下面是对该配置文件各个部分的详细解析: 1. **根元素**: ```xml xmlns=...

    spring-context-4.2.xsd.zip

    在Spring框架中,XML配置文件是声明式配置的主要方式,而XSD(XML Schema Definition)文件则定义了这些XML配置文件的结构和约束。`spring-context-4.2.xsd`是Spring 4.2版本的Context模块的XSD文件,它包含了对...

Global site tag (gtag.js) - Google Analytics