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
相关推荐
下面我们将深入探讨Spring配置文件中的关键知识点。 首先,我们来看`<context:component-scan>`标签,它用于开启注解扫描。这个标签告诉Spring去寻找特定包下的所有使用了Spring注解(如@Service、@Repository、@...
为了启用Request作用域,需要在Web应用的配置文件中添加`RequestContextListener`监听器。以下是配置示例: ```xml <listener-class>org.springframework.web.context.request.RequestContextListener ``` ...
一、Spring配置文件基础 `applicationContext.xml`是Spring应用上下文的主要配置文件,用于定义bean的实例化、依赖关系以及其行为。在文件中,我们通常会看到如下的基本结构: ```xml <beans xmlns="http://www....
在使用注解之前,Spring通常通过XML配置文件来声明和管理Bean以及它们之间的依赖关系。例如,`Office`、`Car`和`Boss`三个类,需要在`beans.xml`中分别声明为Bean,并通过`<property>`标签注入依赖: ```xml <!--...
Bean的配置文件是Spring框架的核心组件之一,它定义了Bean的创建过程,包括Bean的类名、属性、构造器参数、依赖关系等信息。在xml文件中,我们可以使用元素来定义一个Bean,该元素有多个属性,例如id、class、scope...
- **减少XML配置** - 使用注解,我们可以避免在单独的XML配置文件中定义Bean及其依赖关系,使得代码更加紧凑且易于阅读。 - **增强内聚性** - 注解与Java代码在同一文件,降低了在不同文件间切换查找配置的需要,...
RED5配置文件详解 RED5是一个开源的流媒体服务器,基于Jetty6(Servlet引擎)和Mina(网络编程库)构建,并集成了Spring框架。本文档旨在帮助初学者理解和配置RED5服务器的关键文件,以确保顺利运行和自定义设置。 ...
自Spring 2.5版本起,Spring引入了注释驱动的配置,使得开发者可以通过在类和方法上添加注释来替代传统的XML配置文件。这种方式极大地简化了配置过程,提高了开发效率,也增强了代码的可读性和内聚性。本文将深入...
**Spring配置文件** —— Spring的bean定义 Spring的配置文件通常位于`WEB-INF`目录下,如`applicationContext.xml`,用于定义bean的实例化和依赖注入。例如,定义一个PetAction bean: ```xml ``` 此处,`/...
根据给定的部分内容来看,本文将着重介绍 Spring 配置文件中的相关内容,特别是数据源、SQL 映射客户端、事务管理器以及事务属性源的配置。 ##### 1. 数据源 DataSource 配置 ```xml <value>...
在Spring 3.0中,基于Annotation的依赖注入成为了主要的依赖管理方式,它允许开发者直接在类或方法级别应用注解,而无需在XML配置文件中进行繁琐的bean定义。这一改进不仅减少了配置的工作量,还增强了代码的可读性...
《Spring配置文件详解——共五页》 在Java开发领域,Spring框架无疑是最为重要的工具之一,它以其强大的依赖注入和面向切面编程能力,极大地简化了企业级应用的开发。本篇文档将深入探讨Spring配置文件的核心概念,...
配置文件`dwr.xml`是DWR的核心配置,用来定义哪些Java对象可以被远程访问,以及如何转换这些对象以适应JavaScript环境。 在DWR配置文件中,主要分为以下几个部分: 1. **DOCTYPE声明**: 首先,`<!DOCTYPE>`声明...
### DWR配置文件详解 #### 一、基本概念与术语 在深入了解DWR配置文件之前,我们首先需要明确几个核心概念: 1. **参数转换**(Conversion):DWR能够处理客户端与服务器端的数据交互,这包括将客户端的...
在实际应用中,正确理解和配置这些框架的配置文件至关重要。以下是对SSH框架配置文件的详细解析。 1. **Struts框架配置文件**: - `struts-config.xml`:这是Struts的核心配置文件,用于定义Action和ActionForm,...
1. 使用XML配置文件:可以在XML配置文件中配置Bean的生命周期和作用域。 2. 使用Annotation配置:可以使用Annotation来配置Bean的生命周期和作用域。 3. 使用Java配置:可以使用Java代码来配置Bean的生命周期和作用...
**DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...
配置文件是Spring Cloud应用的核心组成部分之一,主要用于设置服务的各项参数。配置文件可以使用YAML或Properties格式。 1. **配置文件位置** - 在`src/main/resources`目录下创建`application.yml`或`application...
`applicationContext.xml`是Spring框架的核心配置文件之一,用于定义Bean以及它们之间的依赖关系。下面是对该配置文件各个部分的详细解析: 1. **根元素**: ```xml xmlns=...
在Spring框架中,XML配置文件是声明式配置的主要方式,而XSD(XML Schema Definition)文件则定义了这些XML配置文件的结构和约束。`spring-context-4.2.xsd`是Spring 4.2版本的Context模块的XSD文件,它包含了对...