(‘靠山’)

<“(「 ““{<「『在』」>}””[」)”>一样平常开发时,<{“我”}>(们经常需要) “(「 ““{<「『在』」>}””[」)”SpringBoot (「应」『“【【 ((《『‘用’』》))[】】”』{启动时})<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>某一段「<“逻辑”>」,〖如〗〖『〖“下面”〗』〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》场景:

  • 『获取』“一些当”前环境《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》设“置或变量”

  • “向〖『< 数[>』<<据>>〗库写入一些初始”〖『< 数[>』<<据>>〗

  • 《「毗邻某」》些第三方系统,{《确认》对方可{〖以〗}事情}..

“(「 ““{<「『在』」>}””[」)”实现{〖这〗}些功效时,{{“我”}}「们可能会遇到一些」"「坑」"。【 为「了」[<(【「‘‘『{{(行)}}』’’」】)>】《使》SpringBoot‘{『〖<框>〗』}’「架」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》{便}利性,<{“我”}们>(不得不将整{个}「应」)『“【【 ((《『‘用’』》))[】】”』〖《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>{控制权交}〗给容器,〖【〖于〗】〖<〖『‘《 『『<<是>>』』[》’』〗>〗「造成「了」」〗【「人」「人」对【〖于〗】细】「节〖<〖『‘《 『『<<是>>』』[》’』〗>〗一无所知《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》」。{〖那么〗}“(「 ““{<「『在』」>}””[」)”实现<初始化>「<“逻辑”>」( 代[)「码」时就需要小心「了」,好比,【{“我”}们“并”】不能 简朴[《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》{将<初始化>}「<“逻辑”>」“(「 ““{<「『在』」>}””[」)”Bean(< 类[>《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》组织)‘《 ‘《 {【「方」式】}[[》’[》’ 【中】实现[[,“< 类[>”‘〖似〗’〖『〖“下面”〗』〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『 代[「码」』:

@Component
public  class  InvalidInitExampleBean {

     @Autowired
     private  Environment env;

     public  InvalidInitExampleBean() {
          env.getActiveProfiles();
     }
}

「{〖这〗}里」,{“我”}们“(「 ““{<「『在』」>}””[」)”InvalidInitExampleBean《《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》》组织‘《 ‘《 {【「方」式】}[[》’[》’【中】试图接见(‘一{个}自动注入’《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》)env『< 字段[[>』,当真正<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>时,{{你一定会}获得一}《{个}空》指 《针异常》[(NullPointerException)。

缘故原(「由」)“(「 ““{<「『在』」>}””[」)”【〖于〗】,『当组织‘《 ‘《 {【「方」式】}[[》’[》’ 被【挪】[『“【【 ((《『‘用’』》))[】】”』时』,Spring《「上下文【中】」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》》Environment「{〖这〗}」{个}Bean「很可能还没有被」“实例化”,『同时也仍未注』入到‘当前’‘(工)具’,〖<{〖以〗}〖<〖『‘《 『『<<是>>』』[》’』〗>〗>“并”〗{不能{〖这〗}}样举<(【「‘‘『{{(行)}}』’’」】)>【挪】『“【【 ((《『‘用’』》))[】】”』。

〖『〖“下面”〗』〗,{“我”}们{来}看看“(「 ““{<「『在』」>}””[」)”SpringBoot 【中】实现[["『平安<初始化>』"《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》一些‘《 ‘《 {【「方」式】}[[》’[》’:

1、 @PostConstruct (〖<注>解〗)

@PostConstruct (〖<注>解〗)其实〖<〖『‘《 『『<<是>>』』[》’』〗>〗{来}(自【〖于〗】) javax《《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》「扩展包【中】」》(〖“大多”『< 数[>』「人」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》(印象)〗【中】〖<〖『‘《 『『<<是>>』』[》’』〗>〗{来}(自【〖于〗】)Spring‘{『〖<框>〗』}’「架」),〖它〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》‘作’『“【【 ((《『‘用’』》))[】】”』“(「 ““{<「『在』」>}””[」)”【〖于〗】『《声明一{个}》』Bean‘(工)具’‘<初始化>‘完成’后’<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》‘《 ‘《 {【「方」式】}[[》’[》’

<{来}>看看〖它〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『原始』〖界说〗:

The PostConstruct annotation is used on a method that needs to be executed  after dependency injection is done to perform any initialization

《也就〖<〖『‘《 『『<<是>>』』[》’』〗>〗说》,〖<(该)>〗‘《 ‘《 {【「方」式】}[[》’[》’会“(「 ““{<「『在』」>}””[」)”所有依赖『< 字段[[>』注入后才<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>,〖固然{〖这〗}一动‘作’也〖<〖『‘《 『『<<是>>』』[》’』〗>〗〗(「由」)Spring‘{『〖<框>〗』}’「架」<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》。

〖『〖“下面”〗』〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『 代[「码」』演示「了」《使》『“【【 ((《『‘用’』》))[】】”』@PostConstruct《《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》例子》:

2、 InitializingBean 《<‘ 【{接}口】[’>》

InitializingBean 【〖<〖『‘《 『『<<是>>』』[》’』〗>〗】(「由」)Spring‘{『〖<框>〗』}’「架」提供《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》《<‘ 【{接}口】[’>》,<其<《「与」》>>@PostConstruct(〖<注>解〗)《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》事情原理异常< 类[>‘〖似〗’。〖若〗〖<〖『‘《 『『<<是>>』』[》’』〗>〗不《使》『“【【 ((《『‘用’』》))[】】”』(〖<注>解〗)《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》「话」,『〖你需要〗让』Bean《「实例继续」》 InitializingBean《<‘ 【{接}口】[’>》,「“并”实」现afterPropertiesSet()「{〖这〗}」{个}‘《 ‘《 {【「方」式】}[[》’[》’。

〖『〖“下面”〗』〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『 代[「码」』,展示「了」{〖这〗}种『“【【 ((《『‘用’』》))[】】”』『法』:

3、 @Bean initMethod‘《 ‘《 {【「方」式】}[[》’[》’

{“我”}们“(「 ““{<「『在』」>}””[」)”『《声明一{个}》』Bean{《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》时刻},可{〖以〗}同时指定一{个}initMethod《‘属性’》,〖<(该)>〗《‘属性’》会“{「指向」}”Bean《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》一{个}‘《 ‘《 {【「方」式】}[[》’[》’,示意“(「 ““{<「『在』」>}””[」)”〖<初始化>后〗<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>。

《〖《如》下〗》所示:

「然」后,「{〖这〗}里」将initMethod“{「指向」}”init‘《 ‘《 {【「方」式】}[[》’[》’,响「应」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》{“我”}们也需要“(「 ““{<「『在』」>}””[」)”Bean 【中】实现[[「{〖这〗}」{个}‘《 ‘《 {【「方」式】}[[》’[》’:

{上面《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》 代[}「码」〖<〖『‘《 『『<<是>>』』[》’』〗>〗基【〖于〗】Java(〖<注>解〗)《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》‘《 ‘《 {【「方」式】}[[》’[》’,《使》『“【【 ((《『‘用’』》))[】】”』Xml‘设置也可{〖以〗}到’达同样《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》【‘效’果】:

〖<(该)>〗‘《 ‘《 {【「方」式】}[[》’[》’“(「 ““{<「『在』」>}””[」)”早期《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》 Spring版本【中】大量被《使》『“【【 ((《『‘用’』》))[】】”』

4、 『组织器』注入

〖若〗〖<〖『‘《 『『<<是>>』』[》’』〗>〗依赖《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『< 字段[[>』“(「 ““{<「『在』」>}””[」)”Bean《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》组织‘《 ‘《 {【「方」式】}[[》’[》’【中】声明,{〖那么〗}Spring‘{『〖<框>〗』}’「架」会先实例{〖这〗}些『< 字段[[>』<对「应」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》>Bean,再【挪】『“【【 ((《『‘用’』》))[】】”』‘当前’《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》组织‘《 ‘《 {【「方」式】}[[》’[》’。〖『此』时〗,组织‘《 ‘《 {【「方」式】}[[》’[》’【中】《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》一些操‘作’{也〖<〖『‘《 『『<<是>>』』[》’』〗>〗平安《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》},〖《如》下〗:

5、 ApplicationListener

ApplicationListener 【〖<〖『‘《 『『<<是>>』』[》’』〗>〗】(「由」) spring-context组件提供《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》一{个}《<‘ 【{接}口】[’>》,「主要」〖<〖『‘《 『『<<是>>』』[》’』〗>〗『“【【 ((《『‘用’』》))[】】”』{来}{监听} "(<容器上下文>)《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》生命周期<事宜>"。〖它〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》〖界说〗〖《如》下〗:

「{〖这〗}里」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》event“可{〖以〗}”〖<〖『‘《 『『<<是>>』』[》’』〗>〗任何一{个}继续【〖于〗】ApplicationEvent《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》<事宜>‘(工)具’。 对【〖于〗】初[始化事情{来}说,({“我”}们可{〖以〗}【「通」过】){监听}ContextRefreshedEvent「{〖这〗}」{个}<事宜>{来}捕捉上下文【<初始化>《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》】时机。如〖『〖“下面”〗』〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『 代[「码」』:

“(「 ““{<「『在』」>}””[」)”Spring(『「上下文<初始化>」』)‘完成’后,「{〖这〗}里」〖界说〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》‘《 ‘《 {【「方」式】}[[》’[》’将会被<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>。『<《「与」》>前面』《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》InitializingBean《差》别《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》〖<〖『‘《 『『<<是>>』』[》’』〗>〗,【「通」过】ApplicationListener{监听}《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》‘《 ‘《 {【「方」式】}[[》’[》’〖<〖『‘《 『『<<是>>』』[》’』〗>〗《全》局性《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》,也就〖<〖『‘《 『『<<是>>』』[》’』〗>〗当所有《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》Bean都‘<初始化>‘完成’后’才会<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>‘《 ‘《 {【「方」式】}[[》’[》’。

Spring 4.2 「之后」[引入「了」新《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》 @EventListener(〖<注>解〗),可{〖以〗}实现同样《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》【‘效’果】:

6、 CommandLineRunner

SpringBoot “提供「了」一{个}”CommanLineRunner《<‘ 【{接}口】[’>》,『“【【 ((《『‘用’』》))[】】”』{来}实现“(「 ““{<「『在』」>}””[」)”「应」『“【【 ((《『‘用’』》))[】】”』启动后《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》「<“逻辑”>」控制,其〖界说〗〖《如》下〗:

「{〖这〗}里」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》run‘《 ‘《 {【「方」式】}[[》’[》’会“(「 ““{<「『在』」>}””[」)”Spring (『「上下文<初始化>」』)‘完成’后<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>,同时会传入「应」『“【【 ((《『‘用’』》))[】】”』《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》启动「【参】『< 数[>』」。如〖『〖“下面”〗』〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『 代[「码」』:

【此外】,「对【〖于〗】多{个}」CommandLineRunner《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》情况下可{〖以〗}《使》『“【【 ((《『‘用’』》))[】】”』@Order(〖<注>解〗){来}控制〖它〗们《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》“〖顺〗”《『序』》。

7、 ApplicationRunner

<《「与」》> CommandLineRunner《<‘ 【{接}口】[’>》< 类[>‘〖似〗’, Spring boot 还提供另一{个}ApplicationRunner 《<‘ 【{接}口】[’>》{来}实现<初始化>「<“逻辑”>」。差别《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》地方“(「 ““{<「『在』」>}””[」)”【〖于〗】 ApplicationRunner.run()‘《 ‘《 {【「方」式】}[[》’[》’『接受』《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》〖<〖『‘《 『『<<是>>』』[》’』〗>〗「封装好」《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》ApplicationArguments「【参】『< 数[>』」‘(工)具’,“而不”〖<〖『‘《 『『<<是>>』』[》’』〗>〗 简朴[《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》『字符串』「【参】『< 数[>』」。

ApplicationArguments‘(工)具’{提供「了」一些}异常利便《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》‘《 ‘《 {【「方」式】}[[》’[》’,可{〖以〗}『“【【 ((《『‘用’』》))[】】”』{来}直接获取剖析后《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》「【参】『< 数[>』」,好比:

java -jar application.jar --debug --ip=xxxx

〖『此』时〗【「通」过】 ApplicationArguments《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》getOptionNames<就会获得>["debug","ip"]{〖这〗}样《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》值。

『测试』『 代[「码」』

〖『〖“下面”〗』〗,【「通」过】一{个}小测试{来}演示几种<初始化>‘《 ‘《 {【「方」式】}[[》’[》’《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>“〖顺〗”《『序』》。

‘按’〖《如》下〗『 代[「码」』实现一{个}复合式《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》Bean:

<〖 《『【执】』》[〗<(【「‘‘『{{(行)}}』’’」】)>>「{〖这〗}」{个}Bean《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》<初始化>,<会发现日志输>出〖《如》下〗:

<{〖以〗}〖<〖『‘《 『『<<是>>』』[》’』〗>〗>,{〖这〗}几种<初始化>《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》“〖顺〗”《『序』》为:

  1. 『组织器』‘《 ‘《 {【「方」式】}[[》’[》’

  2. @PostConstruct (〖<注>解〗)‘《 ‘《 {【「方」式】}[[》’[》’

  3. InitializingBean《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》afterPropertiesSet()

  4. Bean〖界说〗《『『{〖〖『‘〖〖「{‘ < (“‘【(<【<『{〖““《{『 〖【‘的’】〗[』}》””〗}』>】>)】’”)[>[’}」〗〗’』〗〗}』』》initMethod《‘属性’》‘《 ‘《 {【「方」式】}[[》’[》’