国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring注解專題系類(二)

Alex / 3134人閱讀

摘要:的在單例被破壞時(shí)由進(jìn)行方法調(diào)用。定義并實(shí)現(xiàn)這兩個(gè)接口容器創(chuàng)建完成注解是的縮寫,意思是規(guī)范提案。在創(chuàng)建完成并且屬性賦值完成來執(zhí)行初始化方法在容器銷毀之前回調(diào)通知支持自動(dòng)裝配,類似。

Spring注解應(yīng)用篇--IOC容器Bean生命周期
這是Spring注解專題系類文章,本系類文章適合Spring入門者或者原理入門者,小編會(huì)在本系類文章下進(jìn)行企業(yè)級(jí)應(yīng)用實(shí)戰(zhàn)講解以及spring源碼跟進(jìn)。
本文來自公眾號(hào):B一下爪哇
環(huán)境準(zhǔn)備

編譯器IDEA

maven依賴spring-context version:4.3.12.RELEASE

maven依賴junit version:4.11

Bean注解來指定bean初始化和銷毀方法

前面一章提過,在配置類中通過@Bean來將組件注入到容器中,在容器中,Bean的生命周期大抵上可以分為創(chuàng)建--初始化--銷毀的過程,容器管理著組件的全部生命周期。Bean注解源碼里面包含initMethod和destroyMethod兩個(gè)屬性,可以分別來自定義bean的初始化方法和銷毀方法。
自定義格式:

@Bean(initMethod=,destoryMethod=)

測(cè)試:
先在Bean中自定義初始化和銷毀方法:

public class ExampleBean {
    private String name;
    private int age;
.....
public void init(){
        System.out.println("ExampleB init...");
    }
    public void destory(){
        System.out.println("Example destory...");
    }
}

配置類:

@Configuration
public class BaseConfig {
    @Bean(value="beanIdDefinition",initMethod = "init",destroyMethod = "destory")
    public ExampleBean exampleBean(){
        return new ExampleBean();
    }
}

測(cè)試類:

@Test
    public void shouldAnswerWithTrue()
    {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(BaseConfig.class);
        System.out.println("IOC容器創(chuàng)建完成...");
        String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
        ctx.close();
    }

output:

exampleBean constructor......
ExampleB init...
IOC容器創(chuàng)建完成...
Example destory...

由此可知,在容器初始化過程中已經(jīng)完成對(duì)bean的初始化工作,并且在容器關(guān)閉途中,調(diào)用bean的銷毀方法。(下一章分析容器初始化大致做了哪一些工作)

InitializingBean和DisposableBean接口指定Bean初始化和銷毀方法

InitializingBean的afterPropertiesSet在設(shè)置提供Bean的屬性值后由BeanFactory調(diào)用進(jìn)行方法調(diào)用。
DisposableBean的destory在Bean單例被破壞時(shí)由BeanFactory進(jìn)行方法調(diào)用。
定義Bean并實(shí)現(xiàn)這兩個(gè)接口

public class LifeCycleBean implements InitializingBean, DisposableBean{
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("LifeCycleBean afterPropertieSet....");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("LifeCycleBean destory....");
    }
}

output:

LifeCycleBean afterPropertieSet....
IOC容器創(chuàng)建完成...
LifeCycleBean destory....
PostConstruct & PreDestory注解

JSR是Java Specification Requests的縮寫,意思是Java 規(guī)范提案。
JSR250已經(jīng)添加至Java SE6中,常用的大概就是PostConstruct初始化、PreDestory銷毀、Resource資源等。
Spring支持JSR250的注解。PostConstruct在bean創(chuàng)建完成并且屬性賦值完成;來執(zhí)行初始化方法;PreDestory在容器銷毀bean之前回調(diào)通知;Resource支持bean自動(dòng)裝配,類似Autowired。
使用方式,在Bean中直接添加:

@PostConstruct
    public void initPost(){
        System.out.println("ExampleBean JSR250 PostConstruct...");
    }

    @PreDestroy
    public void destoryPre(){
        System.out.println("ExampleBean JSR250 PreDestory...");
    }

測(cè)試output:

exampleBean constructor......
ExampleBean JSR250 PostConstruct...
IOC容器創(chuàng)建完成...
ExampleBean JSR250 PreDestory...
BeanPostProcessor后置處理器

BeanPostProcessor【接口】:bean后置處理器在Bean的生命周期起到一個(gè)承上啟下的作用,在Bean初始化前后進(jìn)行處理工作。

PostProcessorBeforeInitialization方法:在初始化方法調(diào)用之前調(diào)用;

postProcessorBefore方法:在bean初始化方法調(diào)用之后工作

兩個(gè)方法都包含2個(gè)相同的參數(shù):
@param Object o:Bean實(shí)例
@param String s:beanName

定義一個(gè)Bean實(shí)現(xiàn)后置處理器接口:

public class BeanPostProcessorDefinition implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {
        System.out.println("postProcessBeforeInitialization -->"+s+" = "+o);
        return o;
    }

    @Override
    public Object postProcessAfterInitialization(Object o, String s) throws BeansException {
        System.out.println("postProcessorAfterInitialization -->"+s+"="+o);
        return o;
    }
}

以容器中存在的id為exampleBean的bean為例:查看output:

//部分容器初始化的一些bean
exampleBean constructor......
postProcessBeforeInitialization -->exampleBean = ExampleBean{name="null", age=0}
ExampleBean JSR250 PostConstruct...
postProcessorAfterInitialization -->exampleBean=ExampleBean{name="null", age=0}
IOC容器創(chuàng)建完成...

由此不難得出,在容器初始化過程中,大致依次完成bean的創(chuàng)建,實(shí)例化,屬性賦值,執(zhí)行bean后置處理器初始化之前的方法,執(zhí)行初始化方法,執(zhí)行bean后置處理器初始化之后的方法。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74626.html

相關(guān)文章

  • Spring注解專題系列

    摘要:用法先創(chuàng)建個(gè)組件,,,分別在類上加上注解。發(fā)現(xiàn)有一個(gè)屬性源碼注釋這樣說的自動(dòng)檢測(cè)使用組件。在的方法中,表示不匹配,代表匹配。這就說明使用注冊(cè)組件有種方式。 Spring注解應(yīng)用篇--IOC容器Bean組件注冊(cè) 這是Spring注解專題系類文章,本系類文章適合Spring入門者或者原理入門者,小編會(huì)在本系類文章下進(jìn)行企業(yè)級(jí)應(yīng)用實(shí)戰(zhàn)講解以及spring源碼跟進(jìn)。 環(huán)境準(zhǔn)備 編譯器IDEA...

    CocoaChina 評(píng)論0 收藏0
  • Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方式

    摘要:那么為什么可以帶給我們這樣的完美編碼體驗(yàn)?zāi)貙?shí)際上,這完全歸功于的封裝,由于在服務(wù)注冊(cè)與發(fā)現(xiàn)客戶端負(fù)載均衡等方面都做了很好的抽象,而上層應(yīng)用方面依賴的都是這些抽象接口,而非針對(duì)某個(gè)具體中間件的實(shí)現(xiàn)。 通過《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)》一文的學(xué)習(xí),我們已經(jīng)學(xué)會(huì)如何使用Nacos來實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn),同時(shí)也介紹如何通過LoadBala...

    curlyCheng 評(píng)論0 收藏0
  • Spring Boot 2 快速教程:WebFlux 快速入門(

    摘要:響應(yīng)式編程是基于異步和事件驅(qū)動(dòng)的非阻塞程序,只是垂直通過在內(nèi)啟動(dòng)少量線程擴(kuò)展,而不是水平通過集群擴(kuò)展。三特性常用的生產(chǎn)的特性如下響應(yīng)式編程模型適用性內(nèi)嵌容器組件還有對(duì)日志消息測(cè)試及擴(kuò)展等支持。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號(hào):泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! 02:WebFlux 快速入門實(shí)踐 文章工程: JDK...

    gaara 評(píng)論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會(huì)有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評(píng)論0 收藏0
  • 手摸手,帶你封裝一個(gè)vue component

    摘要:靈活性和針對(duì)性。所以我覺得大部分組件還是自己封裝來的更為方便和靈活一些。動(dòng)手開干接下來我們一起手摸手教改造包裝一個(gè)插件,只要幾分鐘就可以封裝一個(gè)專屬于你的。 項(xiàng)目地址:vue-countTo配套完整后臺(tái)demo地址:vue-element-admin系類文章一:手摸手,帶你用vue擼后臺(tái) 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶...

    pkhope 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<