1. 程式人生 > >【Spring註解】@Scope 作用域和@Lazy懶載入

【Spring註解】@Scope 作用域和@Lazy懶載入

[email protected] 作用域和@Lazy懶載入

@Scope來表示註冊物件的作用域。

@Scope的四種類型

//多例模式,只有在使用類時才註冊物件
ConfigurableBeanFactory#SCOPE_PROTOTYPE 
//單例模式(預設),容器初始化時就註冊物件,不過可以通過@Lazy註解來實現懶載入
ConfigurableBeanFactory#SCOPE_SINGLETON
//web的requerst域(不常用)
org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST
//web的Session域(不常用)
org.springframework.web.context.WebApplicationContext#SCOPE_SESSION
@Configuration
public class ScopeConfig {
    @Bean
    @Scope("prototype")
    public Person person(){
        System.out.println("向容器中註冊Person物件。。。。");
        return new Person("gaoyuzhe ",12);
    }
}
public class ScopeConfigTest
{
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(ScopeConfig.class); /** * 遍歷匹配的元件名稱 * @param annotationConfigApplicationContext 註解上下文 */ private void printClassName(AnnotationConfigApplicationContext annotationConfigApplicationContext){ String[] beanDefinitionNames = annotationConfigApplicationContext.getBeanDefinitionNames(); for
(int i = 0; i < beanDefinitionNames.length; i++) { System.out.println("匹配的類"+beanDefinitionNames[i]); } } @Test public void person() { printClassName(annotationConfigApplicationContext); } }

prototype未呼叫

呼叫Person物件

@Test
        public void person() {
            printClassName(annotationConfigApplicationContext);
            Person person1 = annotationConfigApplicationContext.getBean(Person.class);
            System.out.println(person1);
            Person person2 = annotationConfigApplicationContext.getBean(Person.class);
            System.out.println(person2);
            System.out.println(person1 ==person2);
        }

呼叫Person物件

相關推薦

Spring註解@Scope 作用@Lazy載入

[email protected] 作用域和@Lazy懶載入 @Scope來表示註冊物件的作用域。 @Scope的四種類型 //多例模式,只有在使用類時才註冊物件

Spring註解@Configuration@ComponentScan註解

Spring註解 一、組建註冊 包結構: [email protected]和@ComponentScan @ComponentScan的includeFilters

Spring註解1、Spring元件註冊

1、@Configuration: 指定該註解的類是個配置類,對應之前的配置檔案   2、@Bean: 指定該方法作為一個Bean元件,它會往容器中註冊一個Bean元件; 其中型別為返回值,id預設為方法名;

Spring註解3、屬性賦值

1、@Value 配置檔案 person.properties: person.nickName=張三 person.age=20 實體類 Person.java: @Data @AllArgsConstructor @NoArgsConstructor public class

Spring註解2、Bean生命週期

1、初始化和銷燬 通過@Bean註解的initMethod和destroyMethod屬性 InitializingBean介面、DisposableBean介面 可以使用JSR250: @PostConstruct:在Bean建立完成並且屬性

Spring註解FactoryBean註冊

5.FactoryBean 自定義Cat的工廠物件 CatFactoryBean /** * @author GaoYuzhe * @date 2018/3/13. */ publ

Spring註解@Condition條件註冊

[email protected]條件註冊 @Condition來指定一定條件下注冊元件對像 All Conditions that must match in order

Spring註解——生命週期以及自動裝配

    本文主要講解一下配合spring註解講解spring中bean的生命週期和自動裝配涉及到一些註解,如有理解偏頗之處,懇請各位大神指正。容器管理bean的生命週期bean的生命週期     bea

Spring註解四、自動裝配@[email protec

四、自動裝配 [email protected]&@Qualifier和@Primary @Autowried是Spring2.5定義的自動裝配的註解,它可以對類成員變數、方法及建構函式進行標註,完成自動裝配的工作。 使用 @Au

spring 中bean的作用生命週期

spring中bean的作用域: 生命週期(官方圖): spring 中bean例項化過程(不好意思,我盜圖了): 1:instantiate bean物件例項化 2:populate properties 封裝屬性 3:如果Bean實現BeanNameAwar

Spring Boot(7)、配置檔案載入位置

Spring Boot啟動會掃描以下位置的application.properties/yml檔案作為Spring Boot預設配置檔案:外接,在相對於應用程式執行目錄的/config子目錄裡外接,在應

Spring註解驅動開發使用@Scope註解設定元件的作用

## 寫在前面 > Spring容器中的元件預設是單例的,在Spring啟動時就會例項化並初始化這些物件,將其放到Spring容器中,之後,每次獲取物件時,直接從Spring容器中獲取,而不再建立物件。如果每次從Spring容器中獲取物件時,都要建立一個新的例項物件,該如何處理呢?此時就需要使用@Sc

js 基礎 作用閉包

代碼 var 垃圾回收器 間接 undefined scrip 運行時 例子 解析 一、編譯過程 常見編譯性語言,在程序代碼執行之前會經歷三個步驟,稱為編譯。 步驟一:分詞或者詞法分析 將由字符組成的字符串分解成有意義的代碼塊,這些代碼塊被稱為詞法單元。 例子: v

學習筆記四:變量、作用內存問題

允許 幫助 範圍 訪問內存 常用 ie9 值傳遞 問題: eof 1.引用類型的值   引用類型的值是指保存在內存中的對象,JavaScript不允許直接訪問內存中的位置,因此在操作對象時,實際上是操作的引用而不是實際的對象。(嚴密的說法是:當復制保存著對象的某個變量時,

學習筆記四:變數、作用記憶體問題

1.引用型別的值    引用型別的值是指儲存在記憶體中的物件,JavaScript不允許直接訪問記憶體中的位置,因此在操作物件時,實際上是操作的引用而不是實際的物件。(嚴密的說法是:當複製儲存著物件的某個變數時,操作的是物件的引用。但為物件新增屬性時,操作的是實際物件)。   1)引用型別可以動態新增屬性。

Spring MVC註解配置檔案的程式碼比較

當我們在類檔案裡寫了方法,怎麼被程式知道並呼叫呢?一般有兩種方法: 配置檔案 註解 下面小編就以親自敲的例子“SpringMVC_Test”為例來簡單說說。 配置檔案篇 在springmvc.xml中這樣寫: 在controller包下的類中這樣寫: 註

讀書筆記你唔知JS 函式作用作用

函式中的作用域   1.無論識別符號宣告出現在作用域中的何處, 這個識別符號所代表的變數或函式都將附屬於所處作用域的氣泡。    2.這些識別符號全都無法從全域性作用域中進行訪問, 因此會導致ReferenceError 錯誤。     隱藏

終極指南:變數提升、作用閉包

原文作者:Tyler McGinnis 原文連結:tylermcginnis.com/ultimate-gu… 文中部分連結可能需要梯子。 歡迎批評指正。 說出來可能嚇你一跳,在我看來,理解Javascript的最重要最基本的思路就是理解執行上下文。吃透了執行上下文,你就能更好地學

JMeter各元件的作用執行順序

剛使用 jmeter 時,可能對其中各元件的作用域和執行順序會很迷惑,需要多嘗試多思考。 一、JMeter 中各元件的作用域 元件的作用域是靠測試計劃的的樹型結構中元件的父子關係來確定的 其中取樣器不和其它元件相互作用,因此沒有作用域的概念

Spring註解開發元件註冊-使用@Configuration@Bean給容器中註冊元件

## 寫在前面 > 在之前的Spring版本中,我們只能通過寫XML配置檔案來定義我們的Bean,XML配置不僅繁瑣,而且很容易出錯,稍有不慎就會導致編寫的應用程式各種報錯,排查半天,發現是XML檔案配置不對!另外,每個專案編寫大量的XML檔案來配置Spring,也大大增加了專案維護的複雜度,往往很多