欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring的@Scope注解作用解析

 更新時(shí)間:2023年11月24日 10:14:47   作者:大樹(shù)下躲雨  
這篇文章主要介紹了Spring的@Scope注解作用解析,@Scope注解用于設(shè)置實(shí)例的作用域,默認(rèn)值是單實(shí)例,即當(dāng)IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取,需要的朋友可以參考下

 一、@Scope注解

1、@Scope注解作用

@Scope注解用于設(shè)置實(shí)例的作用域。

默認(rèn)值是單實(shí)例,即當(dāng)IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取。

2、@Socpe注解的值

//  多實(shí)例:IOC容器啟動(dòng)并不會(huì)調(diào)用方法創(chuàng)建對(duì)象放在容器中。每次獲取的時(shí)候才會(huì)調(diào)用方法創(chuàng)建對(duì)象
 @see ConfigurableBeanFactory#SCOPE_PROTOTYPE    ->  prototype
//  單實(shí)例(默認(rèn)值):IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取
 @see ConfigurableBeanFactory#SCOPE_SINGLETON    ->  singleton
//下面兩個(gè)值用于web應(yīng)用:
//  同一次請(qǐng)求創(chuàng)建一個(gè)實(shí)例
 @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST   ->  request
//  同一個(gè)session創(chuàng)建一個(gè)實(shí)例
 @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION   ->  session

3、標(biāo)注位置

? 可標(biāo)注在類和方法上

在這里插入圖片描述

4、源碼查看

在這里插入圖片描述

二、@Scope注解單實(shí)例案例

1、項(xiàng)目結(jié)構(gòu)

在這里插入圖片描述

2、Persion實(shí)體

public class Persion {
    private String name;
    private int age;
    public Persion(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Persion{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

3、Bean注冊(cè)配置類

import com.dashu.bean.Persion;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.*;
/**
 * @Configuration 注解:告訴Spring這是一個(gè)配置類
 *
 * 配置類 == 配置文件(beans.xml文件)
 *
 */
@Configuration
public class BeanConfig {
    /**
     *
     *  多實(shí)例:IOC容器啟動(dòng)并不會(huì)調(diào)用方法創(chuàng)建對(duì)象放在容器中。每次獲取的時(shí)候才會(huì)調(diào)用方法創(chuàng)建對(duì)象
     * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE    ->  prototype
     *
     *  單實(shí)例(默認(rèn)值):IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取
     * @see ConfigurableBeanFactory#SCOPE_SINGLETON    ->  singleton
     *
     *  同一次請(qǐng)求創(chuàng)建一個(gè)實(shí)例
     * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST   ->  request
     *
     *  同一個(gè)session創(chuàng)建一個(gè)實(shí)例
     * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION   ->  session
     */
    @Scope
    @Bean
    public Persion persion(){
        return new Persion("張三",20);
    }
}

4、測(cè)試類

import com.dashu.bean.Persion;
import com.dashu.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
        Persion persion1 = (Persion) annotationConfigApplicationContext.getBean("persion");
        Persion persion2 = (Persion) annotationConfigApplicationContext.getBean(Persion.class);
        /**
         * 
         * 兩次獲取Persion的實(shí)例,都是同一個(gè)
         * 
         *  @Scope 注解的默認(rèn)值(單實(shí)例) :IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取
         */
        System.out.println(persion1 == persion2);
    }
}

5、測(cè)試結(jié)果

在這里插入圖片描述

三、@Scope注解多實(shí)例案例

1、Bean注冊(cè)配置類

import com.dashu.bean.Persion;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.*;
/**
 * @Configuration 注解:告訴Spring這是一個(gè)配置類
 *
 * 配置類 == 配置文件(beans.xml文件)
 *
 */
@Configuration
public class BeanConfig {
    /**
     *
     *  多實(shí)例:IOC容器啟動(dòng)并不會(huì)調(diào)用方法創(chuàng)建對(duì)象放在容器中。每次獲取的時(shí)候才會(huì)調(diào)用方法創(chuàng)建對(duì)象
     * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE    ->  prototype
     *
     *  單實(shí)例(默認(rèn)值):IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取
     * @see ConfigurableBeanFactory#SCOPE_SINGLETON    ->  singleton
     *
     *  同一次請(qǐng)求創(chuàng)建一個(gè)實(shí)例
     * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST   ->  request
     *
     *  同一個(gè)session創(chuàng)建一個(gè)實(shí)例
     * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION   ->  session
     */
    @Scope("prototype")
    @Bean
    public Persion persion(){
        return new Persion("張三",20);
    }
}

2、測(cè)試類

import com.dashu.bean.Persion;
import com.dashu.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
        Persion persion1 = (Persion) annotationConfigApplicationContext.getBean("persion");
        Persion persion2 = (Persion) annotationConfigApplicationContext.getBean(Persion.class);
        /**
         *
         * 兩次獲取Persion的實(shí)例不相同
         *
         *  @Scope 注解設(shè)置多實(shí)例:IOC容器啟動(dòng)并不會(huì)調(diào)用方法創(chuàng)建對(duì)象放在容器中。每次獲取的時(shí)候才會(huì)調(diào)用方法創(chuàng)建對(duì)象
         */
        System.out.println(persion1 == persion2);
    }
}

3、測(cè)試結(jié)果

在這里插入圖片描述

四、使用注解

@ComponentScan開(kāi)啟包掃描,在類上標(biāo)注注解@Scope(多實(shí)例)案例

1、Persion實(shí)體

import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
/**
 *
 *  多實(shí)例:IOC容器啟動(dòng)并不會(huì)調(diào)用方法創(chuàng)建對(duì)象放在容器中。每次獲取的時(shí)候才會(huì)調(diào)用方法創(chuàng)建對(duì)象
 * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE    ->  prototype
 *
 *  單實(shí)例(默認(rèn)值):IOC容器啟動(dòng)后就調(diào)用該方法創(chuàng)建對(duì)象放到IOC容器中,以后每次獲取就是直接從容器中獲取
 * @see ConfigurableBeanFactory#SCOPE_SINGLETON    ->  singleton
 *
 *  同一次請(qǐng)求創(chuàng)建一個(gè)實(shí)例
 * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST   ->  request
 *
 *  同一個(gè)session創(chuàng)建一個(gè)實(shí)例
 * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION   ->  session
 */
@Scope("prototype")
@Component
public class Persion {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Persion{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2、Bean注冊(cè)配置類

import com.dashu.bean.Persion;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.*;
/**
 * @Configuration 注解:告訴Spring這是一個(gè)配置類
 *
 * 配置類 == 配置文件(beans.xml文件)
 *
 */
@Configuration
@ComponentScan(value = "com.dashu")
public class BeanConfig {
}

3、測(cè)試類

import com.dashu.bean.Persion;
import com.dashu.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
        Persion persion1 = (Persion) annotationConfigApplicationContext.getBean("persion");
        Persion persion2 = annotationConfigApplicationContext.getBean(Persion.class);
        /**
         *
         * 兩次獲取Persion的實(shí)例不相同
         *
         *  @Scope 注解設(shè)置多實(shí)例:IOC容器啟動(dòng)并不會(huì)調(diào)用方法創(chuàng)建對(duì)象放在容器中。每次獲取的時(shí)候才會(huì)調(diào)用方法創(chuàng)建對(duì)象
         */
        System.out.println(persion1 == persion2);
    }
}

4、測(cè)試結(jié)果

在這里插入圖片描述

到此這篇關(guān)于Spring的@Scope注解作用解析的文章就介紹到這了,更多相關(guān)@Scope注解作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合ES高級(jí)查詢方式

    SpringBoot整合ES高級(jí)查詢方式

    這篇文章主要介紹了SpringBoot整合ES高級(jí)查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Spring 依賴注入的幾種方式詳解

    Spring 依賴注入的幾種方式詳解

    本篇文章主要介紹了Spring 依賴注入的幾種方式詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 淺析JAVA中toString方法的作用

    淺析JAVA中toString方法的作用

    以下是對(duì)在JAVA中toString方法的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • 解決常見(jiàn)的Eclipse SVN插件報(bào)錯(cuò)方法詳解

    解決常見(jiàn)的Eclipse SVN插件報(bào)錯(cuò)方法詳解

    本篇文章是對(duì)常見(jiàn)的Eclipse SVN插件報(bào)錯(cuò)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • SpringBoot執(zhí)行有返回值的異步任務(wù)問(wèn)題

    SpringBoot執(zhí)行有返回值的異步任務(wù)問(wèn)題

    這篇文章主要介紹了SpringBoot執(zhí)行有返回值的異步任務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Druid之連接創(chuàng)建及銷毀示例詳解

    Druid之連接創(chuàng)建及銷毀示例詳解

    這篇文章主要為大家介紹了Druid之連接創(chuàng)建及銷毀示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 解決Maven依賴沖突的方法

    解決Maven依賴沖突的方法

    本文主要介紹了解決Maven依賴沖突的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringBoot整合Milvus的實(shí)現(xiàn)

    SpringBoot整合Milvus的實(shí)現(xiàn)

    本文主要介紹了SpringBoot整合Milvus的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java內(nèi)存管理垃圾回收基礎(chǔ)詳解

    Java內(nèi)存管理垃圾回收基礎(chǔ)詳解

    這篇文章主要為大家介紹了Java內(nèi)存管理垃圾回收基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 使用Mybatis-plus實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的內(nèi)部字段進(jìn)行比較

    使用Mybatis-plus實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的內(nèi)部字段進(jìn)行比較

    這篇文章主要介紹了使用Mybatis-plus實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的內(nèi)部字段進(jìn)行比較方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論