【Spring】Spring常用配置-Bean的Scope

转载请注明出处:http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

分析

Scope(范围)描述的是Spring容器如何新建Bean的实例的。可以简单的理解成Bean的作用范围!
Spring的Scope有以下的几种,可以通过@Scope注解来实现。

1、singleton:一个Spring容器中只有一个Bean的实例。
    这是Spring的默认配置,也就是不写@Scope("singleton"),全容器共享一个实例。

2、prototype:每次调用都会新建一个Bean的实例。

3、request:Web项目中,给每一个http request新建一个Bean实例。
    也就是每一个request请求,都会新建一个Bean。

4、session:Web项目中,给每一个http session新建一个Bean实例。
    也就是同一个session访问的请求,都是同一个Bean。

5、globalSession:这个只在portal应用中有用,给每一个global http session新建一个Bean实例。

在Spring Batch中还有一个Scope是使用@StepScope的,这里就不介绍了。以后会有博客提到。
现在要去了解的,请自行谷歌。

下面的实例是简单的演示默认的singleton和prototype,分别从Spring容器中获得2次Bean,分别用==与equals判断Bean的实例是否相等!

示例

singleton的Bean

package cn.hncu.p2_1_1Scope;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2016/11/11.
 * Time: 上午 11:09.
 * Explain:Singleton---默认Spring-Scope
 */
@Service//默认@Scope为Singleton-相当于添加
//@Scope("singleton")
public class DemoSingletonService {
}

prototype的Bean

package cn.hncu.p2_1_1Scope;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2016/11/11.
 * Time: 上午 11:23.
 * Explain:编写Prototype的Bean
 */
@Service
@Scope("prototype")
public class DemoPrototypeService {
}

配置类

package cn.hncu.p2_1_1Scope;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2016/11/11.
 * Time: 上午 11:42.
 * Explain:配置类
 */
@Configuration
@ComponentScan("cn.hncu.p2_1_1Scope.")
public class ScopeConfig {
}

运行

package cn.hncu.p2_1_1Scope;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2016/11/11.
 * Time: 上午 11:43.
 * Explain:运行类
 */
public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ScopeConfig.class);

        DemoPrototypeService p1 = context.getBean(DemoPrototypeService.class);
        DemoPrototypeService p2 = context.getBean(DemoPrototypeService.class);

        DemoSingletonService s1 = context.getBean(DemoSingletonService.class);
        DemoSingletonService s2 = context.getBean(DemoSingletonService.class);

        System.out.println("p1.equals(p2):"+p1.equals(p2));//false
        System.out.println("p1==p2:"+(p1==p2));//false

        System.out.println("s1.equals(s2):"+s1.equals(s2));//true
        System.out.println("s1==s2:"+(s1==s2));//true
    }
}

运行结果

项目链接—具体包:
https://github.com/chenhaoxiang/Java/tree/master/springBoot/src/main/java/cn/hncu/p2_1_1Scope

本文章由[谙忆]编写, 所有权利保留。

转载请注明出处:http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

时间: 2024-11-02 19:34:41

【Spring】Spring常用配置-Bean的Scope的相关文章

【Spring】Spring常用配置-Bean的初始化和销毁(生命周期)

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 分析 在我们实际开发的时候,经常会遇到在Bean使用之前或者之后做些必要的操作,Spring对Bean的生命周期的操作提供了支持. 有如下2种方式: 1.Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和destroy-method) 2.注解方式: 利用JSR-250的@PostConstruct和@Pr

2.Spring常用配置—1.Bean的Scope

1.点睛 Scope描述的是Spring容器如何新建Bean的实例的.Spring的Scope有以下几种,通过@Scope注解来实现. (1)Singleton:一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例. (2)Prototype:每次调用新建一个Bean的实例. (3)Request:Web项目中,给每一个http request新建一个Bean实例. (4)Session:Web项目中,给每一个http session新建一个Bean实例.

Spring常用配置

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52471101作者:朱培      ID:sdksdk0      邮箱: zhupei@tianfang1314.cn   -------------------

Spring源码剖析——Bean的配置与启动

IOC介绍   相信大多数人在学习Spring时 IOC 和 Bean 算得上是最常听到的两个名词,IOC在学习Spring当中出现频率如此之高必然有其原因.如果我们做一个比喻的话,把Bean说成Spring中主角的话,那么IOC便是这个主角进行演出的舞台,没有IOC作为Bean的承载,那么Bean便不会在编程中大放异彩.作为Spring核心组件的重要一员,了解其内部实现对我们编程和窥探Spring内幕是相当有帮助的,下面一步步从源码的角度来剖析IOC究竟是怎样实现的. 接口设计   首先我们先

spring学习笔记(3)Bean命名、定义与配置

基于xml的配置 基础配置 <bean id="id" name="name" class="full_name"> <property name="pname" value="pvalue" lazy-init="defalut/true/false" scope="singleton/prototype/request/session" />

Spring中bean的scope

Spring容器中的bean具备不同的scope,最开始只有singleton和prototype,但是在2.0之后,又引入了三种类型:request.session和global session,不过这三种类型只能在Web应用中使用. 在定义bean的时候,可以通过指定<bean>的singleton或者scope属性来指定相应对象的scope,例如: <bean id="testMock" class="org.test.javadu.TestMock&

Spring boot将配置属性注入到bean 专题

@ConfigurationProperties和@value都是将外部属性注入到对象 @ConfigurationProperties很方便使用. 比用@value注解好吗? 在特定的方案中是的,这只是一个选择问题 @EnableConfigurationProperties //开启属性注入,有此注解就可以通过@autowired注入, 是配合@ConfigurationProperties使用的.如果没有@EnableConfigurationProperties,则使用@Configur

spring配置bean如何忽略通过注解引入的bean

问题描述 spring配置bean如何忽略通过注解引入的bean 我只想创建一个A类的对象,因为B中依赖A,但是A中通过注解又依赖于C,我只想创建一个A的对象给B,实际上B中我用不着A,只是测试时调用B中的部分方法,怎么定义才能实现这个呢? 解决方案 Spring中bean三种注解方式.Bean 基于注解的配置[Spring]IOC之基于注解的配置bean(上)

《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置

一.版本的说明 Angel版本对应Spring Boot 1.2.x,可以使用Spring Boot 1.3.x: Brixton版本对应Spring Boot 1.3.x,可以使用Spring Boot 1.4.x: Camden版本对应Spring Boot 1.4.x,可以使用Spring Boot 1.5.x: Dalston版本对应Spring Boot 1.5.x 二.应用进行热部署 添加依赖: <dependency> <groupId>org.springframe