ุชู…ู‡ูŠุฏ ู†ูุณูƒ ุŒ ุงู„ุฑุจูŠุน ู‚ุงุฏู… (ุงู„ุฌุฒุก 2)

ูŠูˆุงุตู„ Evgeny EvgenyBorisov Borisov ( NAYA Technologies) ูˆ Kirill tolkkv Tolkachev (Cyan.Finance ุŒ Twitter ) ุงู„ุญุฏูŠุซ ุนู† ุงุณุชุฎุฏุงู… Spring Boot ู„ุญู„ ู…ุดูƒู„ุงุช ุงู„ุจู†ูƒ ุงู„ุญุฏูŠุฏูŠ ููŠ Braavos. ููŠ ุงู„ุฌุฒุก ุงู„ุซุงู†ูŠ ุŒ ุณู†ุฑูƒุฒ ุนู„ู‰ ุงู„ู…ู„ูุงุช ุงู„ุดุฎุตูŠุฉ ูˆุงู„ุฏู‚ุงุฆู‚ ู„ุฅุทู„ุงู‚ ุงู„ุชุทุจูŠู‚.






ูŠู…ูƒู† ุงู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ุฌุฒุก ุงู„ุฃูˆู„ ู…ู† ุงู„ู…ู‚ุงู„ุฉ ู‡ู†ุง .


ู„ุฐู„ูƒ ุŒ ุญุชู‰ ูˆู‚ุช ู‚ุฑูŠุจ ุŒ ุฌุงุก ุงู„ุนู…ูŠู„ ูˆุทู„ุจ ูู‚ุท ุฅุฑุณุงู„ ุบุฑุงุจ. ุงู„ุขู† ุชุบูŠุฑ ุงู„ูˆุถุน. ู„ู‚ุฏ ุญุงู† ูุตู„ ุงู„ุดุชุงุก ุŒ ูˆุงู†ู‡ุงุฑ ุงู„ุฌุฏุงุฑ.


ุฃูˆู„ุง ุŒ ู…ุจุฏุฃ ุฅุตุฏุงุฑ ุงู„ู‚ุฑูˆุถ ูŠุชุบูŠุฑ. ุฅุฐุง ูƒุงู† ููŠ ูˆู‚ุช ุณุงุจู‚ ุจุงุญุชู…ุงู„ูŠุฉ 50 ูช ูู‚ุฏ ุฃุนุทูˆุง ู„ู„ุฌู…ูŠุน ุจุงุณุชุซู†ุงุก Starks ุŒ ูˆุงู„ุขู† ูŠู‚ุฏู…ูˆู† ุงู„ุขู† ูู‚ุท ู„ุฃูˆู„ุฆูƒ ุงู„ุฐูŠู† ูŠุณุฏุฏูˆู† ุงู„ุฏูŠูˆู†. ู„ุฐู„ูƒ ุŒ ู†ู‚ูˆู… ุจุชุบูŠูŠุฑ ู‚ูˆุงุนุฏ ุฅุตุฏุงุฑ ุงู„ู‚ุฑูˆุถ ููŠ ู…ู†ุทู‚ ุฃุนู…ุงู„ู†ุง. ูˆู„ูƒู† ูู‚ุท ู„ูุฑูˆุน ุงู„ุจู†ูƒ ุŒ ุงู„ุชูŠ ุชู‚ุน ุญูŠุซ ุฌุงุก ุงู„ุดุชุงุก ุจุงู„ูุนู„ ุŒ ููŠ ูƒู„ ู…ุง ุชุจู‚ู‰ ูŠุจู‚ู‰ ูƒู„ ุดูŠุก ูƒู…ุง ูƒุงู† ู…ู† ู‚ุจู„. ุฃุฐูƒุฑูƒ ุฃู† ู‡ุฐู‡ ุฎุฏู…ุฉ ุชู‚ุฑุฑ ู…ุง ุฅุฐุง ูƒู†ุช ุณุชู…ู†ุญ ู‚ุฑุถู‹ุง ุฃู… ู„ุง. ุณู†ู‚ูˆู… ูู‚ุท ุจุฎุฏู…ุฉ ุฃุฎุฑู‰ ู„ู† ุชุนู…ู„ ุฅู„ุง ููŠ ูุตู„ ุงู„ุดุชุงุก.


ู†ุฐู‡ุจ ุฅู„ู‰ ู…ู†ุทู‚ ุฃุนู…ุงู„ู†ุง:


public class WhiteListBasedProphetService implements ProphetService {  @Override  public boolean willSurvive(String name) {    return false;  } } 

ู„ุฏูŠู†ุง ุจุงู„ูุนู„ ู‚ุงุฆู…ุฉ ุจุฃูˆู„ุฆูƒ ุงู„ุฐูŠู† ูŠุณุฏุฏูˆู† ุฏูŠูˆู†ู‡ู….


 spring: application.name: money-raven jpa.hibernate.ddl-auto: validate ironbank: ---:   -  : -: ,   : true 

ูˆู‡ู†ุงูƒ ูุฆุฉ ู…ุฑุชุจุทุฉ ุจุงู„ูุนู„ ุจุงู„ู…ู„ูƒูŠุฉ - .


 public class ProphetProperties { List<String> ; } 

ูƒู…ุง ููŠ ุงู„ุฃูˆู‚ุงุช ุงู„ุณุงุจู‚ุฉ ุŒ ู†ู‚ูˆู… ูู‚ุท ุจุญู‚ู†ู‡ุง ู‡ู†ุง:


 public class WhiteListBasedProphetService implements ProphetService { private final ProphetProperties prophetProperties; @Override public boolean willSurvive(String name) {   return false; } } 

ุชุฐูƒุฑ ุนู† ุญู‚ู† ุงู„ู…ู†ุดุฆ (ุญูˆู„ ุงู„ุชุนู„ูŠู‚ุงุช ุงู„ุชูˆุถูŠุญูŠุฉ ุงู„ุณุญุฑูŠุฉ):


 @Service @RequiredArgsConstructor public class WhiteListBasedProphetService implements ProphetService { private final ProphetProperties prophetProperties; @Override public boolean willSurvive(String name) {   return false; } } 

ุฃูˆุดูƒุช ุนู„ู‰ ุงู„ุงู†ุชู‡ุงุก.


ุงู„ุขู† ูŠุฌุจ ุฃู† ู†ุนุทูŠ ูู‚ุท ู„ุฃูˆู„ุฆูƒ ุงู„ุฐูŠู† ูŠุณุฏุฏูˆู† ุงู„ุฏูŠูˆู†:


 @Service @RequiredArgsConstructor public class WhiteListBasedProphetService implements ProphetService { private final ProphetProperties prophetProperties; @Override public boolean willSurvive(String name) { return prophetProperties.get().contains(name); } } 

ูˆู„ูƒู† ู‡ู†ุง ู„ุฏูŠู†ุง ู…ุดูƒู„ุฉ ุตุบูŠุฑุฉ. ู„ุฏูŠู†ุง ุงู„ุขู† ุชุทุจูŠู‚ุงู†: ุงู„ุฎุฏู…ุงุช ุงู„ู‚ุฏูŠู…ุฉ ูˆุงู„ุฌุฏูŠุฏุฉ.


 Description Parameter 1 of constructor in com.ironbank.moneyraven.service.TransferMoneyProphecyBackendโ€ฆ - nameBasedProphetService: defined in file [/Users/tolkv/git/conferences/spring-boot-ripperโ€ฆ - WhileListBackendProphetService: defined in file [/Users/tolkv/git/conferences/spring-boot-ripper... 

ู…ู† ุงู„ู…ู†ุทู‚ูŠ ุชู‚ุณูŠู… ู‡ุฐู‡ ุงู„ุญุจูˆุจ ุฅู„ู‰ ู…ู„ูุงุช ุชุนุฑูŠู ู…ุฎุชู„ูุฉ. ู„ู…ุญุฉ ูˆู…ู„ู . ุฏุน ุฎุฏู…ุชู†ุง ุงู„ุฌุฏูŠุฏุฉ ุชุนู…ู„ ูู‚ุท ููŠ ู…ู„ู ุชุนุฑูŠู :


 @Service @Profile(ProfileConstants.) @RequiredArgsConstructor public class WhiteListBasedProphetService implements ProphetService { private final ProphetProperties prophetProperties; @Override public boolean willSurvive(String name) {   return prophetProperties.get().contains(name); } } 

ูˆุงู„ุฎุฏู…ุฉ ุงู„ู‚ุฏูŠู…ุฉ ููŠ .


 @Service @Profile(ProfileConstants.) public class NameBasedProphetService implements ProphetService { @Override public boolean willSurvive(String name) {   return !name.contains("Stark") && ThreadLocalRandom.current().nextBoolean(); } } 

ู„ูƒู† ุงู„ุดุชุงุก ูŠุฃุชูŠ ุจุจุทุก. ููŠ ุงู„ู…ู…ุงู„ูƒ ุจุฌูˆุงุฑ ุงู„ุฌุฏุงุฑ ุงู„ู…ูƒุณูˆุฑ ุŒ ุญุงู† ูุตู„ ุงู„ุดุชุงุก ุจุงู„ูุนู„. ูˆู„ูƒู† ููŠ ู…ูƒุงู† ู…ุง ููŠ ุงู„ุฌู†ูˆุจ - ู„ูŠุณ ุจุนุฏ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ูŠุฌุจ ุฃู† ุชุนู…ู„ ุงู„ุชุทุจูŠู‚ุงุช ุงู„ู…ูˆุฌูˆุฏุฉ ููŠ ุงู„ูุฑูˆุน ูˆุงู„ู…ู†ุงุทู‚ ุงู„ุฒู…ู†ูŠุฉ ุงู„ู…ุฎุชู„ูุฉ ุจุดูƒู„ ู…ุฎุชู„ู. ูˆูู‚ู‹ุง ู„ุธุฑูˆู ู…ู‡ู…ุชู†ุง ุŒ ู„ุง ูŠู…ูƒู†ู†ุง ู…ุญูˆ ุงู„ุชู†ููŠุฐ ุงู„ู‚ุฏูŠู… ุญูŠุซ ุฌุงุก ุงู„ุดุชุงุก ูˆุงุณุชุฎุฏุงู… ุงู„ูุตู„ ุงู„ุฌุฏูŠุฏ. ู†ุฑูŠุฏ ู…ู† ู…ูˆุธููŠ ุงู„ุจู†ูƒ ุฃู„ุง ูŠูุนู„ูˆุง ุดูŠุฆู‹ุง ุนู„ู‰ ุงู„ุฅุทู„ุงู‚: ุณู†ู‚ุฏู… ู„ู‡ู… ุชุทุจูŠู‚ู‹ุง ุณูŠุนู…ู„ ููŠ ุงู„ูˆุถุน ุงู„ุตูŠููŠ ุญุชู‰ ุญู„ูˆู„ ูุตู„ ุงู„ุดุชุงุก. ูˆุนู†ุฏู…ุง ูŠุฃุชูŠ ุงู„ุดุชุงุก ุŒ ูŠุนูŠุฏูˆู† ุชุดุบูŠู„ู‡ ุŒ ูˆู‡ุฐุง ูƒู„ ุดูŠุก. ู„ู† ูŠุถุทุฑูˆุง ุฅู„ู‰ ุชุบูŠูŠุฑ ุงู„ุฑู…ุฒ ุŒ ูˆู…ุญูˆ ุฃูŠ ูุฆุงุช. ู„ุฐู„ูƒ ุŒ ู„ุฏูŠู†ุง ููŠ ุงู„ุจุฏุงูŠุฉ ู…ู„ููŠู†: ุฌุฒุก ู…ู† ุงู„ุณู„ุฉ ูŠุชู… ุฅู†ุดุงุคู‡ ุนู†ุฏ ุงู„ุตูŠู ุŒ ูˆุฌุฒุก ู…ู† ุงู„ุณู„ุฉ ูŠุชู… ุฅู†ุดุงุคู‡ ุนู†ุฏ ุงู„ุดุชุงุก.


ูˆู„ูƒู† ุชุธู‡ุฑ ู…ุดูƒู„ุฉ ุฃุฎุฑู‰:




ุงู„ุขู† ู„ูŠุณ ู„ุฏูŠู†ุง ุญุจุฉ ูˆุงุญุฏุฉ ุŒ ู„ุฃู†ู†ุง ุญุฏุฏู†ุง ู…ู„ููŠู† ุดุฎุตูŠูŠู† ุŒ ูˆูŠุจุฏุฃ ุงู„ุชุทุจูŠู‚ ููŠ ู…ู„ู ุงู„ุชุนุฑูŠู ุงู„ุงูุชุฑุงุถูŠ.


ู„ุฐู„ูƒ ู„ุฏูŠู†ุง ู…ุชุทู„ุจุงุช ุฌุฏูŠุฏุฉ ู…ู† ุงู„ุนู…ูŠู„.


ู‚ุงู†ูˆู† ุงู„ุญุฏูŠุฏ 2. ู„ุง ูŠุณู…ุญ ุงู„ุชุดูƒูŠู„ ุงู„ุฌุงู†ุจูŠ




ู„ุง ู†ุฑูŠุฏ ุฑูุน ุงู„ุณูŠุงู‚ ุฅุฐุง ู„ู… ูŠุชู… ุชู†ุดูŠุท ุงู„ูˆุถุน ุŒ ู„ุฃู† ุงู„ุดุชุงุก ู‚ุฏ ุญุงู† ุจุงู„ูุนู„ ุŒ ุฃุตุจุญ ูƒู„ ุดูŠุก ุณูŠุฆู‹ุง ู„ู„ุบุงูŠุฉ. ู‡ู†ุงูƒ ุฃุดูŠุงุก ู…ุนูŠู†ุฉ ูŠุฌุจ ุฃู† ุชุญุฏุซ ุฃู… ู„ุง ุŒ ุงุนุชู…ุงุฏู‹ุง ุนู„ู‰ ู…ุง ุฅุฐุง ูƒุงู† ุฃูˆ . ุฃูŠุถู‹ุง ุŒ ุงู†ุธุฑ ุฅู„ู‰ ุงู„ุงุณุชุซู†ุงุก ุŒ ุงู„ุฐูŠ ุชู… ุชู‚ุฏูŠู… ู†ุตู‡ ุฃุนู„ุงู‡. ู„ุง ูŠุดุฑุญ ุฃูŠ ุดูŠุก. ู„ู… ูŠุชู… ุชุญุฏูŠุฏ ู…ู„ู ุงู„ุชุนุฑูŠู ุŒ ูˆุจุงู„ุชุงู„ูŠ ู„ุง ูŠูˆุฌุฏ ุชุทุจูŠู‚ ProphetService . ููŠ ุงู„ูˆู‚ุช ู†ูุณู‡ ุŒ ู„ู… ูŠู‚ู„ ุฃุญุฏ ุฃู†ู‡ ู…ู† ุงู„ุถุฑูˆุฑูŠ ุชุนูŠูŠู† ู…ู„ู ุชุนุฑูŠู.


ู„ุฐู„ูƒ ุŒ ู†ุฑูŠุฏ ุงู„ุขู† ุชุซุจูŠุช ู‚ุทุนุฉ ุฅุถุงููŠุฉ ููŠ ุงู„ู…ุจุชุฏุฆ ู„ุฏูŠู†ุง ุŒ ูˆุงู„ุชูŠ ุŒ ุนู†ุฏ ุฅู†ุดุงุก ุงู„ุณูŠุงู‚ ุŒ ุณุชุชุญู‚ู‚ ู…ู† ุชุนูŠูŠู† ุจุนุถ ุงู„ู…ู„ูุงุช ุงู„ุดุฎุตูŠุฉ. ุฅุฐุง ู„ู… ูŠุชู… ุชุนูŠูŠู†ู‡ ุŒ ูู„ู† ู†ุตุนุฏ ูˆู†ุฑู…ูŠ ู…ุซู„ ู‡ุฐุง ุงู„ุงุณุชุซู†ุงุก (ูˆู„ูŠุณ ุงุณุชุซู†ุงุกู‹ ู…ู† ุนุฏู… ูˆุฌูˆุฏ ุตู†ุฏูˆู‚).


ู‡ู„ ูŠู…ูƒู†ู†ุง ุงู„ู‚ูŠุงู… ุจุฐู„ูƒ ู…ุน ู…ุณุชู…ุน ุงู„ุชุทุจูŠู‚ ู„ุฏูŠู†ุงุŸ ู„ุง. ูˆู‡ู†ุงูƒ ุซู„ุงุซุฉ ุฃุณุจุงุจ ู„ุฐู„ูƒ:


  • ุงู„ู…ุณุชู…ุน ูˆุงุญุฏ ุงู„ู…ุณุคูˆู„ูŠุฉ ู‡ูˆ ุงู„ู…ุณุคูˆู„ ุนู† ุฌุนู„ ุงู„ุบุฑุงุจ ูŠุทูŠุฑ. ูŠุฌุจ ุนู„ู‰ ุงู„ู…ุณุชู…ุน ุฃู„ุง ูŠุชุญู‚ู‚ ู…ู…ุง ุฅุฐุง ูƒุงู† ู…ู„ู ุชุนุฑูŠู ู‚ุฏ ุชู… ุชู†ุดูŠุทู‡ ู„ุฃู† ุชู†ุดูŠุท ู…ู„ู ุชุนุฑูŠู ู„ุง ูŠุคุซุฑ ูู‚ุท ุนู„ู‰ ุงู„ู…ุณุชู…ุน ู†ูุณู‡ ุŒ ูˆู„ูƒู† ุฃูŠุถู‹ุง ุฃูƒุซุฑ ู…ู† ุฐู„ูƒ ุจูƒุซูŠุฑ.
  • ุนู†ุฏู…ุง ูŠุชู… ุจู†ุงุก ุงู„ุณูŠุงู‚ ุŒ ุชุญุฏุซ ุฃุดูŠุงุก ู…ุฎุชู„ูุฉ. ูˆู„ุง ู†ุฑูŠุฏ ุฃู† ูŠุจุฏุฃ ุญุฏูˆุซู‡ุง ุฅุฐุง ู„ู… ูŠุชู… ุชุนูŠูŠู† ู…ู„ู ุชุนุฑูŠู.
  • ูŠุนู…ู„ ุงู„ู…ุณุชู…ุน ููŠ ุงู„ู†ู‡ุงูŠุฉ ุนู†ุฏ ุญู„ ุงู„ุณูŠุงู‚. ูˆุญู‚ูŠู‚ุฉ ุฃู†ู‡ ู„ุง ูŠูˆุฌุฏ ู…ู„ู ุชุนุฑูŠู ุŒ ู†ุญู† ู†ุนู„ู… ููŠ ูˆู‚ุช ุณุงุจู‚ ุจูƒุซูŠุฑ. ู„ู…ุงุฐุง ุชู†ุชุธุฑ ู‡ุฐู‡ ุงู„ุฎู…ุณ ุฏู‚ุงุฆู‚ ุงู„ู…ุดุฑูˆุทุฉ ุญุชู‰ ุชุฑุชูุน ุงู„ุฎุฏู…ุฉ ุชู‚ุฑูŠุจู‹ุง ุŒ ุซู… ูŠุณู‚ุท ูƒู„ ุดูŠุก.

ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุฐู„ูƒ ุŒ ู…ุง ุฒู„ุช ู„ุง ุฃุนุฑู ู…ุง ู‡ูŠ ุงู„ุฃุฎุทุงุก ุงู„ุชูŠ ุณุชุธู‡ุฑ ุจุณุจุจ ุญู‚ูŠู‚ุฉ ุฃู†ู†ุง ุจุฏุฃู†ุง ููŠ ุงู„ุงุฑุชูุงุน ุจุฏูˆู† ู…ู„ู ุชุนุฑูŠู (ุงูุชุฑุถ ุฃู†ู†ูŠ ู„ุง ุฃุนุฑู ู…ู†ุทู‚ ุงู„ุฃุนู…ุงู„). ู„ุฐู„ูƒ ุŒ ููŠ ุญุงู„ุฉ ุนุฏู… ูˆุฌูˆุฏ ู…ู„ู ุชุนุฑูŠู ุŒ ุชุญุชุงุฌ ุฅู„ู‰ ุฅุณู‚ุงุท ุงู„ุณูŠุงู‚ ููŠ ู…ุฑุญู„ุฉ ู…ุจูƒุฑุฉ ุฌุฏู‹ุง. ุจุงู„ู…ู†ุงุณุจุฉ ุŒ ุฅุฐุง ูƒู†ุช ุชุณุชุฎุฏู… ุฃูŠ ู…ู† Cloud Cloud ุŒ ูุฅู† ู‡ุฐุง ูŠุตุจุญ ุฃูƒุซุฑ ู…ู„ุงุกู…ุฉ ู„ูƒ ุŒ ู„ุฃู† ุงู„ุชุทุจูŠู‚ ูŠู‚ูˆู… ุจุงู„ูƒุซูŠุฑ ู…ู† ุงู„ุฃุดูŠุงุก ููŠ ู…ุฑุญู„ุฉ ู…ุจูƒุฑุฉ.


ู„ุชุทุจูŠู‚ ุงู„ู…ุชุทู„ุจุงุช ุงู„ุฌุฏูŠุฏุฉ ุŒ ูŠูˆุฌุฏ ApplicationContextInitializer . ู‡ุฐู‡ ูˆุงุฌู‡ุฉ ุฃุฎุฑู‰ ุชุณู…ุญ ู„ู†ุง ุจุชู…ุฏูŠุฏ ุจุนุถ ู†ู‚ุงุท ุงู„ุฑุจูŠุน ู…ู† ุฎู„ุงู„ ุชุญุฏูŠุฏู‡ุง ููŠ ู…ุตุงู†ุน spring.factories.




ู†ู‚ูˆู… ุจุชุทุจูŠู‚ ู‡ุฐู‡ ุงู„ูˆุงุฌู‡ุฉ ุŒ ูˆู„ุฏูŠู†ุง ู…ูู‡ูŠุฆ ุงู„ุณูŠุงู‚ ุŒ ูˆุงู„ุฐูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ConfigurableApplicationContext :


 public class ProfileCheckAppInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { @Override public void initialize(ConfigurableApplicationContext applicationContext) { } } 

ู…ุน ุฐู„ูƒ ุŒ ูŠู…ูƒู†ู†ุง ุงู„ุญุตูˆู„ ุนู„ู‰ ุงู„ุจูŠุฆุฉ - ุงู„ุดูŠุก ุงู„ุฐูŠ ุฃุนุฏู‡ SpringApplication ู„ู†ุง. ูƒู„ ุงู„ู…ู…ุชู„ูƒุงุช ุงู„ุชูŠ ู†ู…ุฑุฑู‡ุง ุฅู„ูŠู‡ ูˆุตู„ุช ุฅู„ู‰ ู‡ู†ุงูƒ. ู…ู† ุจูŠู† ุฃู…ูˆุฑ ุฃุฎุฑู‰ ุŒ ุชุญุชูˆูŠ ุฃูŠุถู‹ุง ุนู„ู‰ ู…ู„ูุงุช ุชุนุฑูŠู.


ุฅุฐุง ู„ู… ุชูƒู† ู‡ู†ุงูƒ ู…ู„ูุงุช ุดุฎุตูŠุฉ ู‡ู†ุงูƒ ุŒ ููŠุฌุจ ุฃู† ู†ุนุทูŠ ุงุณุชุซู†ุงุก ู‚ุงุฆู„ุงู‹ ุฃู†ู‡ ู„ุง ูŠู…ูƒู†ูƒ ุงู„ุนู…ู„ ุจู‡ุฐู‡ ุงู„ุทุฑูŠู‚ุฉ.


 public class ProfileCheckAppInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { @Override public void initialize(ConfigurableApplicationContext applicationContext) { if applicationContext.getEnvironment().getActiveProfiles().length == 0 {     throw new RuntimeException("  !");   } } } 

ุงู„ุขู† ุชุญุชุงุฌ ุฅู„ู‰ ุชุณุฌูŠู„ ู‡ุฐู‡ ุงู„ุฃุดูŠุงุก ููŠ ู…ุตุงู†ุน ุงู„ุฑุจูŠุน.


 org.springframework.boot.context.properties.EnableConfigurationProperties=com.ironbank.moneyraven.starter.IronConfiguration org.springframework.context.ApplicationContextInitializer=com.ironbank.moneyraven.starter.ProfileCheckAppInitializer 

ู…ู…ุง ุณุจู‚ ุŒ ูŠู…ูƒู†ูƒ ุชุฎู…ูŠู† ุฃู† ApplicationContextInitializer ู‡ูŠ ู†ู‚ุทุฉ ุงู…ุชุฏุงุฏ. ูŠุนู…ู„ ApplicationContextInitializer ุนู†ุฏู…ุง ูŠุจุฏุฃ ุจู†ุงุก ุงู„ุณูŠุงู‚ ู„ู„ุชูˆ ุŒ ูˆู„ุง ุชูˆุฌุฏ ุตู†ุงุฏูŠู‚ ุจุนุฏ.


ุงู„ุณุคุงู„ ุงู„ุฐูŠ ูŠุทุฑุญ ู†ูุณู‡: ุฅุฐุง ูƒุชุจู†ุง ApplicationContextInitializer ุŒ ูู„ู…ุงุฐุง ู„ุง ูŠูƒุชุจ ุŒ ูƒู…ุณุชู…ุน ุŒ ููŠ ุชูƒูˆูŠู† ูŠู…ุชุฏ ุนู„ู‰ ุฃูŠ ุญุงู„ุŸ ุงู„ุฌูˆุงุจ ุจุณูŠุท: ู„ุฃู†ู‡ ูŠุฌุจ ุฃู† ูŠุนู…ู„ ููŠ ูˆู‚ุช ุฃุจูƒุฑ ุนู†ุฏู…ุง ู„ุง ูŠูƒูˆู† ู‡ู†ุงูƒ ุณูŠุงู‚ ูˆู„ุง ุชูƒูˆูŠู†ุงุช. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ู„ุง ูŠู…ูƒู† ุญู‚ู†ู‡ ุญุชู‰ ุงู„ุงู†. ู„ุฐู„ูƒ ุŒ ูุฅู†ู†ุง ู†ุตูู‡ุง ูƒู‚ุทุนุฉ ู…ู†ูุตู„ุฉ.


ุฃุธู‡ุฑุช ู…ุญุงูˆู„ุฉ ุงู„ุฅุทู„ุงู‚ ุฃู† ูƒู„ ุดูŠุก ู‚ุฏ ุณู‚ุท ุจุณุฑุนุฉ ูƒุงููŠุฉ ูˆุฃุจู„ุบู†ุง ุจุฃู†ู†ุง ุจุฏุฃู†ุง ุจุฏูˆู† ู…ู„ู ุชุนุฑูŠู. ุงู„ุขู† ุฏุนูˆู†ุง ู†ุญุงูˆู„ ุชุญุฏูŠุฏ ุจุนุถ ุงู„ู…ู„ูุงุช ุงู„ุดุฎุตูŠุฉ ุŒ ูˆูŠุนู…ู„ ูƒู„ ุดูŠุก - ูŠุชู… ุฅุฑุณุงู„ ุงู„ุบุฑุงุจ.


ApplicationContextInitializer - ูŠุชุญู‚ู‚ ุนู†ุฏู…ุง ูŠุชู… ุฅู†ุดุงุก ุงู„ุณูŠุงู‚ ุจุงู„ูุนู„ ุŒ ูˆู„ูƒู† ู„ุง ูŠูˆุฌุฏ ุดูŠุก ุขุฎุฑ ููŠู‡ ุณูˆู‰ ุงู„ุจูŠุฆุฉ.




ู…ู† ูŠุฎู„ู‚ ุงู„ุจูŠุฆุฉุŸ ูƒุงุฑู„ุณูˆู† - SpringBootApplication . ูŠู…ู„ุฃู‡ุง ุจู…ุนู„ูˆู…ุงุช ุชุนุฑูŠููŠุฉ ู…ุฎุชู„ูุฉ ุŒ ูˆุงู„ุชูŠ ูŠู…ูƒู† ุจุนุฏ ุฐู„ูƒ ุณุญุจู‡ุง ู…ู† ุงู„ุณูŠุงู‚. ูŠู…ูƒู† ุญู‚ู† ู…ุนุธู… ุงู„ุฃุดูŠุงุก ู…ู† ุฎู„ุงู„ @value ุŒ ูˆูŠู…ูƒู† ุงู„ุญุตูˆู„ ุนู„ู‰ ุดูŠุก ู…ุง ู…ู† ุงู„ุจูŠุฆุฉ ุŒ ู„ุฃู†ู†ุง ุญุตู„ู†ุง ู„ู„ุชูˆ ุนู„ู‰ ู…ู„ูุงุช ุชุนุฑูŠู.


ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุชุฃุชูŠ ุฎุตุงุฆุต ู…ุฎุชู„ูุฉ ู‡ู†ุง:


  • ุงู„ุชูŠ ูŠู…ูƒู† ุฃู† ูŠุจู†ูŠู‡ุง Boot Boot ุ›
  • ุงู„ุชูŠ ุชู†ุชู‚ู„ ุนู†ุฏ ุจุฏุก ุงู„ุชุดุบูŠู„ ู…ู† ุฎู„ุงู„ ุณุทุฑ ุงู„ุฃูˆุงู…ุฑ ุ›
  • ุฌู‡ุงุฒูŠุฉ
  • ุชู… ุชูˆุถูŠุญู‡ุง ูƒู…ุชุบูŠุฑุงุช ุจูŠุฆุฉ ุ›
  • ุงู„ู…ู†ุตูˆุต ุนู„ูŠู‡ุง ููŠ ุฎุตุงุฆุต ุงู„ุชุทุจูŠู‚ ุ›
  • ู…ุณุฌู„ุฉ ููŠ ุจุนุถ ู…ู„ูุงุช ุงู„ู…ู„ูƒูŠุฉ ุงู„ุฃุฎุฑู‰.

ูŠุชู… ุฌู…ุน ูƒู„ ู‡ุฐุง ูˆุชุนูŠูŠู†ู‡ ููŠ ูƒุงุฆู† ุจูŠุฆูŠ. ูŠุญุชูˆูŠ ุฃูŠุถู‹ุง ุนู„ู‰ ู…ุนู„ูˆู…ุงุช ุญูˆู„ ู…ู„ูุงุช ุงู„ุชุนุฑูŠู ุงู„ู†ุดุทุฉ. ูƒุงุฆู† ุงู„ุจูŠุฆุฉ ู‡ูˆ ุงู„ุดูŠุก ุงู„ูˆุญูŠุฏ ุงู„ู…ูˆุฌูˆุฏ ููŠ ุงู„ูˆู‚ุช ุงู„ุฐูŠ ูŠุจุฏุฃ ููŠู‡ Boot Boot ููŠ ุจู†ุงุก ุงู„ุณูŠุงู‚.


ุฃูˆุฏ ุฃู† ุฃุฎู…ู† ุชู„ู‚ุงุฆูŠู‹ุง ู…ุง ุณูŠูƒูˆู† ู…ู„ู ุงู„ุชุนุฑูŠู ุฅุฐุง ู†ุณูŠ ุงู„ู†ุงุณ ุฃู† ูŠุณุฃู„ูˆู‡ ุจุฃูŠุฏูŠู‡ู… (ู†ูุนู„ ูƒู„ ุดูŠุก ุญุชู‰ ูŠุชู…ูƒู† ู…ูˆุธููˆ ุงู„ุจู†ูƒ ุงู„ุฐูŠู† ู„ุง ุญูˆู„ ู„ู‡ู… ูˆู„ุง ู‚ูˆุฉ ุจุฏูˆู† ู…ุจุฑู…ุฌูŠู† ู…ู† ุชุดุบูŠู„ ุงู„ุชุทุจูŠู‚ ุญุชู‰ ูŠุนู…ู„ ูƒู„ ุดูŠุก ุจุงู„ู†ุณุจุฉ ู„ู‡ู… ุŒ ุจุบุถ ุงู„ู†ุธุฑ ุนู† ุฃูŠ ุดูŠุก). ู„ู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ุณู†ุถูŠู ุฅู„ู‰ ูƒุงุชุจู†ุง ุดูŠุฆู‹ุง ูŠุฎู…ู† ู…ู„ู ุงู„ุชุนุฑูŠู - ุฃู… ู„ุง - ุงุนุชู…ุงุฏู‹ุง ุนู„ู‰ ุฏุฑุฌุฉ ุงู„ุญุฑุงุฑุฉ ููŠ ุงู„ุดุงุฑุน. ูˆุณุชุณุงุนุฏู†ุง ูˆุงุฌู‡ุฉ ุณุญุฑูŠุฉ ุฌุฏูŠุฏุฉ ุฃุฎุฑู‰ ุฌู…ูŠุนู‹ุง ููŠ ุฐู„ูƒ - EnvironmentPostProcessor ุŒ ู„ุฃู†ู†ุง ุจุญุงุฌุฉ ุฅู„ู‰ ุงู„ู‚ูŠุงู… ุจุฐู„ูƒ ู‚ุจู„ ุนู…ู„ ApplicationContextInitializer . ูˆู‚ุจู„ ApplicationContextInitializer ู„ุง ูŠูˆุฌุฏ ุณูˆู‰ EnvironmentPostProcessor .


ู†ู†ูุฐ ู…ุฑุฉ ุฃุฎุฑู‰ ูˆุงุฌู‡ุฉ ุฌุฏูŠุฏุฉ. ู‡ู†ุงูƒ ุทุฑูŠู‚ุฉ ูˆุงุญุฏุฉ ูู‚ุท ุŒ ุจู†ูุณ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุชูŠ ูŠุชู… ุจู‡ุง ConfigurableEnvironment ููŠ SpringApplication ุŒ ู„ุฃู†ู‡ ู„ูŠุณ ู„ุฏูŠู†ุง ConfigurableContext ุญุชู‰ ุงู„ุขู† (ูˆู‡ูŠ ู…ูˆุฌูˆุฏุฉ ุจุงู„ูุนู„ ููŠ SpringInitializer ูู‡ูŠ ู„ูŠุณุช ู‡ู†ุง ุ› ู‡ู†ุงูƒ ุจูŠุฆุฉ ูู‚ุท).


 public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { } } 

ููŠ ู‡ุฐู‡ ุงู„ุจูŠุฆุฉ ุŒ ูŠู…ูƒู†ู†ุง ุถุจุท ู…ู„ู ุงู„ุชุนุฑูŠู. ูˆู„ูƒู† ุนู„ูŠูƒ ุฃูˆู„ุงู‹ ุงู„ุชุญู‚ู‚ ู…ู† ุนุฏู… ุชุซุจูŠุช ุฃุญุฏ ู…ู† ู‚ุจู„. ู„ุฐู„ูƒ ุŒ ู†ุญุชุงุฌ getActiveProfiles ุฅู„ู‰ ุงู„ุชุญู‚ู‚ ู…ู† getActiveProfiles . ุฅุฐุง ูƒุงู† ุงู„ู†ุงุณ ูŠุนุฑููˆู† ู…ุง ูŠูุนู„ูˆู†ู‡ ูˆู‚ุงู…ูˆุง ุจุฅุนุฏุงุฏ ู…ู„ู ุชุนุฑูŠู ุŒ ูู„ู† ู†ุญุงูˆู„ ุชุฎู…ูŠู†ู‡ู…. ูˆู„ูƒู† ุฅุฐุง ู„ู… ูŠูƒู† ู‡ู†ุงูƒ ู…ู„ู ุชุนุฑูŠู ุŒ ูุณูˆู ู†ุญุงูˆู„ ูู‡ู… ุงู„ุทู‚ุณ.


ูˆุงู„ุซุงู†ูŠ - ูŠุฌุจ ุฃู† ู†ูู‡ู… ู…ุง ุฅุฐุง ูƒุงู† ู„ุฏูŠู†ุง ุทู‚ุณ ุดุชูˆูŠ ุฃูˆ ุตูŠููŠ ุงู„ุขู†. ุณู†ุนูˆุฏ ุฏุฑุฌุฉ ุญุฑุงุฑุฉ -300 .


 public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { if (environment.getActivePrifiles().length == 0 && getTemperature() < -272) {   } } public int getTemperature() { return -300; } } 

ุชุญุช ู‡ุฐู‡ ุงู„ุญุงู„ุฉ ุŒ ู„ุฏูŠู†ุง ุดุชุงุก ุŒ ูˆูŠู…ูƒู†ู†ุง ุฅู†ุดุงุก ู…ู„ู ุชุนุฑูŠู ุฌุฏูŠุฏ. ู†ุชุฐูƒุฑ ุฃู† ุงู„ู…ู„ู ุงู„ุดุฎุตูŠ ูŠุณู…ู‰ :


 public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {   if (environment.getActivePrifiles().length == 0 && getTemperature() < -272) { environment.setActiveProfiles("");   } else { environment.setActiveProfiles("");   } } public int getTemperature() { return -300; } } 

ุงู„ุขู† ู†ุญู† ุจุญุงุฌุฉ ุฅู„ู‰ ุชุญุฏูŠุฏ EnvironmentPostProcessor ููŠ spring.factories.


 org.springframework.boot.context.properties.EnableConfigurationProperties=com.ironbank.moneyraven.starter.IronConfiguration org.springframework.context.ApplicationContextInitializer=com.ironbank.moneyraven.starter.ProfileCheckAppInitializer org.springframework.boot.env.EnvironmentPostProcessor=com.ironbank.moneyraven.starter.ResolveProfileEnvironmentPostProcessor 

ูˆู†ุชูŠุฌุฉ ู„ุฐู„ูƒ ุŒ ูŠุจุฏุฃ ุงู„ุชุทุจูŠู‚ ุจุฏูˆู† ู…ู„ู ุชุนุฑูŠู ุŒ ู†ู‚ูˆู„ ุฃู†ู‡ ุฅู†ุชุงุฌ ุŒ ูˆุชุญู‚ู‚ ู…ู† ุงู„ู…ู„ู ุงู„ุดุฎุตูŠ ุงู„ุฐูŠ ุจุฏุฃู‡ ู…ุนู†ุง. ุจุทุฑูŠู‚ุฉ ุณุญุฑูŠุฉ ุŒ ุฃุฏุฑูƒู†ุง ุฃู† ู…ู„ูู†ุง ุงู„ุดุฎุตูŠ ู‡ูˆ . ูˆู„ู… ูŠุณู‚ุท ApplicationContextInitializer ุŒ ู„ุฃู† ApplicationContextInitializer ุŒ ุงู„ุฐูŠ ูŠุชุญู‚ู‚ ู…ู† ูˆุฌูˆุฏ ู…ู„ู ุชุนุฑูŠู ุŒ ูŠุฃุชูŠ ุจุนุฏ ุฐู„ูƒ.
ุงู„ู†ุชูŠุฌุฉ:


 public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {   if (getTemperature() < -272) {     environment.setActiveProfiles("");   } else {     environment.setActiveProfiles("");   } } private int getTemperature() {   return -300; } } 

ุชุญุฏุซู†ุง ุนู† EnvironmentPostProcessor ุŒ ูˆุงู„ุฐูŠ ูŠุนู…ู„ ู‚ุจู„ ApplicationContextInitializer . ู„ูƒู† ู…ู† ูŠุฏูŠุฑู‡ุงุŸ




ูŠุจุฏุฃ ู‡ุฐุง ุงู„ู†ุฒูˆุฉ ุŒ ูˆู‡ูˆ ุŒ ุนู„ู‰ ู…ุง ูŠุจุฏูˆ ุŒ ุงู„ุงุจู† ุบูŠุฑ ุงู„ุดุฑุนูŠ ู„ู€ ApplicationListener ูˆ EnvironmentPostProcessor ุŒ ู„ุฃู†ู‡ ู…ูˆุฑูˆุซ ู…ู† ApplicationListener ูˆ EnvironmentPostProcessor . ูŠุทู„ู‚ ุนู„ูŠู‡ ConfigFileApplicationListener (ู„ู…ุงุฐุง "ConfigFile" - ู„ุง ุฃุญุฏ ูŠุนุฑู).


ู‡ูˆ ูƒุงุฑู„ุณูˆู† ุŒ ุฃูŠ ูŠูˆูุฑ ุชุทุจูŠู‚ Spring ุจูŠุฆุฉ ู…ุนุฏุฉ ู„ู„ุงุณุชู…ุงุน ุฅู„ู‰ ุญุฏุซูŠู†: ApplicationPreparedEvent ูˆ ApplicationEnvironmentPreparedEvent . ู„ู† ู†ุญู„ู„ ุงู„ุขู† ู…ู† ูŠุฑู…ูŠ ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ. ู‡ู†ุงูƒ ุทุจู‚ุฉ ุฃุฎุฑู‰ (ููŠ ุฑุฃูŠูŠ ุฃู†ู‡ุง ุบูŠุฑ ุถุฑูˆุฑูŠุฉ ุชู…ุงู…ู‹ุง ุจุงู„ูุนู„ ุŒ ุนู„ู‰ ุงู„ุฃู‚ู„ ููŠ ู‡ุฐู‡ ุงู„ู…ุฑุญู„ุฉ ู…ู† ุชุทูˆูŠุฑ ุงู„ุฑุจูŠุน) ุŒ ูˆุงู„ุชูŠ ุชุซูŠุฑ ุญุฏุซู‹ุง ูŠุจุฏุฃ ููŠู‡ ุจู†ุงุก ุงู„ุจูŠุฆุฉ (Application.yml ุŒ ุงู„ุฎุตุงุฆุต ุŒ ู…ุชุบูŠุฑุงุช ุงู„ุจูŠุฆุฉ ูŠุชู… ุชุญู„ูŠู„ู‡ุง ุŒ ุฅู„ุฎ. )
ุจุนุฏ ุงุณุชู„ุงู… ApplicationEnvironmentPreparedEvent ุŒ ูŠูู‡ู… ุงู„ู…ุณุชู…ุน ุฃู†ูƒ ุชุญุชุงุฌ ุฅู„ู‰ ุชูƒูˆูŠู† ุงู„ุจูŠุฆุฉ - ุงุจุญุซ ุนู† ูƒู„ EnvironmentPostProcessor ูˆุฏุนู‡ ูŠุนู…ู„.




ุจุนุฏ ุฐู„ูƒ ุŒ ูŠุฎุจุฑ SpringFactoriesLoader ุจุชุณู„ูŠู… ูƒู„ ู…ุง ุทู„ุจุชู‡ ุŒ ูˆุชุญุฏูŠุฏุงู‹ ุฅู„ู‰ EnvironmentPostProcessor ุŒ ุฅู„ู‰ ู…ุตุงู†ุน spring.Factories. ุซู… ูŠู‚ูˆู… ุจุชุถู…ูŠู† EnvironmentPostProcessor ุจุงู„ูƒุงู…ู„ ููŠ ู‚ุงุฆู…ุฉ ูˆุงุญุฏุฉ.




ูˆูŠุฏุฑูƒ ุฃู†ู‡ ุŒ ุฃูŠุถู‹ุง ุŒ ูŠุนู…ู„ ููŠ ุดุฑูƒุฉ EnvironmentPostProcessor (ููŠ ู†ูุณ ุงู„ูˆู‚ุช) ุŒ ู„ุฐู„ูƒ ูŠุฏูุน ู†ูุณู‡ ุฅู„ู‰ ู‡ู†ุงูƒ ุŒ

ููŠ ู†ูุณ ุงู„ูˆู‚ุช ูŠู‚ูˆู… ุจูุฑุฒู‡ุง ุŒ postProcessEnvironment ู„ูƒู„ ุทุฑูŠู‚ุฉ.


ุจู‡ุฐู‡ ุงู„ุทุฑูŠู‚ุฉ ุŒ ูŠุชู… ุจุฏุก ุฌู…ูŠุน postProcessEnvironment ู…ุง ุจุนุฏ postProcessEnvironment ููŠ ู…ุฑุญู„ุฉ ู…ุจูƒุฑุฉ ู‚ุจู„ SpringApplicationInitializer . ููŠ ู‡ุฐู‡ ุงู„ุญุงู„ุฉ ุŒ ูŠุชู… ุฃูŠุถู‹ุง ุจุฏุก ConfigFileApplicationListener EnvironmentPostProcessor ุบูŠุฑ ู…ูู‡ูˆู…ุฉ ุชุณู…ู‰ ConfigFileApplicationListener .


ุนู†ุฏู…ุง ูŠุชู… ุฅุนุฏุงุฏ ุงู„ุจูŠุฆุฉ ุŒ ูŠุนูˆุฏ ูƒู„ ุดูŠุก ุฅู„ู‰ ูƒุงุฑู„ุณูˆู† ู…ุฑุฉ ุฃุฎุฑู‰.


ุฅุฐุง ูƒุงู†ุช ุงู„ุจูŠุฆุฉ ุฌุงู‡ุฒุฉ ุŒ ูŠู…ูƒู†ูƒ ุจู†ุงุก ุณูŠุงู‚. ูˆูŠุจุฏุฃ ูƒุงุฑู„ุณูˆู† ููŠ ุจู†ุงุก ุงู„ุณูŠุงู‚ ุจุงุณุชุฎุฏุงู… ApplicationInitializer . ู‡ู†ุง ู„ุฏูŠู†ุง ู‚ุทุนุฉ ุฎุงุตุฉ ุจู†ุง ุŒ ูˆุงู„ุชูŠ ุชุชุญู‚ู‚ ู…ู† ูˆุฌูˆุฏ ุจูŠุฆุฉ ููŠู‡ุง ู…ู„ูุงุช ุชุนุฑูŠู ู†ุดุทุฉ ููŠ ุงู„ุณูŠุงู‚. ุฅุฐุง ู„ู… ูŠูƒู† ุงู„ุฃู…ุฑ ูƒุฐู„ูƒ ุŒ ูู†ุญู† ู†ุณู‚ุท ุŒ ู„ุฃู†ู‡ ุจุฎู„ุงู ุฐู„ูƒ ุณูŠุธู„ ู„ุฏูŠู†ุง ู…ุดุงูƒู„ ููŠ ูˆู‚ุช ู„ุงุญู‚. ุซู… ูŠุนู…ู„ ุงู„ู…ุจุชุฏุฆูˆู† ุŒ ู…ุน ุฌู…ูŠุน ุงู„ุชูƒูˆูŠู†ุงุช ุงู„ู…ุนุชุงุฏุฉ ุจุงู„ูุนู„.


ุชุนูƒุณ ุงู„ุตูˆุฑุฉ ุฃุนู„ุงู‡ ุฃู† Spring ู„ูŠุณ ุนู„ู‰ ู…ุง ูŠุฑุงู…. ูŠู„ุชู‚ูŠ ู‡ุคู„ุงุก ุงู„ุฃุฌุงู†ุจ ุจุดูƒู„ ุฏูˆุฑูŠ ู‡ู†ุงูƒ ุŒ ู„ุง ูŠุชู… ุงุญุชุฑุงู… ุงู„ู…ุณุคูˆู„ูŠุฉ ุงู„ูุฑุฏูŠุฉ ูˆุชุญุชุงุฌ ุฅู„ู‰ ุงู„ุชุณู„ู‚ ุจุนู†ุงูŠุฉ.


ุงู„ุขู† ู†ุฑูŠุฏ ุฃู† ู†ุชุญุฏุซ ู‚ู„ูŠู„ุงู‹ ุนู† ุงู„ุฌุงู†ุจ ุงู„ุขุฎุฑ ู…ู† ู‡ุฐุง ุงู„ู…ุฎู„ูˆู‚ ุงู„ุบุฑูŠุจ ุŒ ูˆู‡ูˆ ุงู„ู…ุณุชู…ุน ู…ู† ุฌู‡ุฉ EnvironmentPostProcessor ุฌู‡ุฉ ุฃุฎุฑู‰.




ู…ุซู„ EnvironmentPostProcessor ูŠู…ูƒู†ู‡ ุชุญู…ูŠู„ application.yml ูˆุฎุตุงุฆุต ุงู„ุชุทุจูŠู‚ ูˆุฌู…ูŠุน ุฃู†ูˆุงุน ู…ุชุบูŠุฑุงุช ุงู„ุจูŠุฆุฉ ูˆูˆุณุงุฆุท ุงู„ุฃูˆุงู…ุฑ ูˆู…ุง ุฅู„ู‰ ุฐู„ูƒ. ูˆูƒู…ุณุชู…ุน ุŒ ูŠู…ูƒู†ู‡ ุงู„ุงุณุชู…ุงุน ุฅู„ู‰ ุญุฏุซูŠู†:


  • ApplicationPreparedEvent
  • ApplicationEnvironmentPreparedEvent

ุงู„ุณุคุงู„ ู‡ูˆ:




ูƒู„ ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ ูƒุงู†ุช ููŠ ุงู„ุฑุจูŠุน ุงู„ู‚ุฏูŠู…. ูˆุชู„ูƒ ุงู„ุชูŠ ุชุญุฏุซู†ุง ุนู†ู‡ุง ุฃุนู„ุงู‡ ู‡ูŠ ุฃุญุฏุงุซ ู…ู† Spring Boot (ุฃุญุฏุงุซ ุฎุงุตุฉ ุฃุถุงูู‡ุง ู„ุฏูˆุฑุฉ ุญูŠุงุชู‡). ูˆู‡ู†ุงูƒ ู…ุฌู…ูˆุนุฉ ูƒุจูŠุฑุฉ ู…ู†ู‡ู…. ู‡ุฐู‡ ู‡ูŠ ุงู„ุฑุฆูŠุณูŠุฉ:


  • ApplicationStartingEvent
  • ApplicationEnvironmentPreparedEvent
  • ApplicationPreparedEvent
  • ContextRefreshedEvent
  • EmbeddedServletContainerInitializedEvent
  • ApplicationReadyEvent
  • ApplicationFailedEvent

ู‡ุฐู‡ ุงู„ู‚ุงุฆู…ุฉ ุฃุจุนุฏ ู…ุง ุชูƒูˆู† ุนู† ุงู„ูƒู„. ูˆู„ูƒู† ู…ู† ุงู„ู…ู‡ู… ุฃู† ูŠุฑุชุจุท ุจุนุถู‡ุง ุจุงู„ุญุฐุงุก Spring ุŒ ูˆุฌุฒุกู‹ุง ู…ู†ู‡ุง Spring (ุฌูŠุฏ ุฌุฏู‹ุง ContextRefreshedEvent ุŒ ูˆู…ุง ุฅู„ู‰ ุฐู„ูƒ).


ุงู„ุชุญุฐูŠุฑ ู‡ูˆ ุฃู†ู‡ ู„ูŠุณ ูƒู„ ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ ุงู„ุชูŠ ูŠู…ูƒู†ู†ุง ุงู„ุญุตูˆู„ ุนู„ูŠู‡ุง ููŠ ุงู„ุชุทุจูŠู‚ (ู…ุฌุฑุฏ ุจุดุฑ - ุฌุฏุงุช ู…ุฎุชู„ูุฉ - ู„ุง ูŠู…ูƒู†ู‡ุง ูู‚ุท ุงู„ุงุณุชู…ุงุน ุฅู„ู‰ ุงู„ุฃุญุฏุงุซ ุงู„ู…ุนู‚ุฏุฉ ุงู„ุชูŠ ูŠู„ู‚ูŠู‡ุง Boot Boot). ูˆู„ูƒู† ุฅุฐุง ูƒู†ุช ุชุนุฑู ุงู„ุขู„ูŠุงุช ุงู„ุณุฑูŠุฉ ู„ู€ spring.factories ูˆุชุญุฏูŠุฏ ู…ุณุชู…ุน ุงู„ุชุทุจูŠู‚ ุงู„ุฎุงุต ุจูƒ ุนู„ู‰ ู…ุณุชูˆู‰ spring.factories ุŒ ูุฅู† ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ ู…ู† ุงู„ู…ุฑุญู„ุฉ ุงู„ุฃูˆู„ู‰ ู…ู† ุจุฏุก ุงู„ุชุทุจูŠู‚ ุชุตู„ ุฅู„ูŠูƒ.




ู†ุชูŠุฌุฉ ู„ุฐู„ูƒ ุŒ ูŠู…ูƒู†ูƒ ุงู„ุชุฃุซูŠุฑ ุนู„ู‰ ุจุฏุงูŠุฉ ุทู„ุจูƒ ููŠ ู…ุฑุญู„ุฉ ู…ุจูƒุฑุฉ. ู„ูƒู† ุงู„ู†ูƒุชุฉ ู‡ูŠ ุฃู† ุฌุฒุกู‹ุง ู…ู† ู‡ุฐุง ุงู„ุนู…ู„ ูŠุชู… ููŠ ูƒูŠุงู†ุงุช ุฃุฎุฑู‰ - ู…ุซู„ EnvironmentPostProcessor ูˆ ApplicationContextInitializer .


ูŠู…ูƒู†ูƒ ุฃู† ุชูุนู„ ูƒู„ ุดูŠุก ุนู„ู‰ ุงู„ู…ุณุชู…ุนูŠู† ุŒ ู„ูƒู† ุฐู„ูƒ ุณูŠูƒูˆู† ุบูŠุฑ ู…ุฑูŠุญ ูˆู‚ุจูŠุญ. ุฅุฐุง ูƒู†ุช ุชุฑุบุจ ููŠ ุงู„ุงุณุชู…ุงุน ุฅู„ู‰ ุฌู…ูŠุน ุงู„ุฃุญุฏุงุซ ุงู„ุชูŠ ุชู‚ุงู… ููŠ ุงู„ุฑุจูŠุน ุŒ ูˆู„ูŠุณ ูู‚ุท ContextRefreshedEvent ูˆ ContextStartedEvent ุŒ ูุฃู†ุช ู„ุณุช ุจุญุงุฌุฉ ุฅู„ู‰ ุชุนูŠูŠู† ุงู„ู…ุณุชู…ุน ุŒ ู…ุซู„ ุงู„ููˆู„ ุŒ ุจุงู„ุทุฑูŠู‚ุฉ ุงู„ู…ุนุชุงุฏุฉ (ูˆุฅู„ุง ูŠุชู… ุฅู†ุดุงุคู‡ ุจุนุฏ ููˆุงุช ุงู„ุฃูˆุงู†). ูŠุฌุจ ุฃูŠุถู‹ุง ุชุณุฌูŠู„ู‡ ู…ู† ุฎู„ุงู„ ู…ุตุงู†ุน ุงู„ุฑุจูŠุน ุŒ ุซู… ุณูŠุชู… ุฅู†ุดุงุคู‡ ู‚ุจู„ ุฐู„ูƒ ุจูƒุซูŠุฑ.


ุจุงู„ู…ู†ุงุณุจุฉ ุŒ ุนู†ุฏู…ุง ู†ุธุฑู†ุง ุฅู„ู‰ ู‡ุฐู‡ ุงู„ู‚ุงุฆู…ุฉ ุŒ ู„ู… ูŠูƒู† ู…ู† ุงู„ูˆุงุถุญ ู„ู†ุง ู…ุชู‰ ู‚ุงู…ุช ContextStartedEvent ูˆ ContextStoppedEvent ุนู„ู‰ ุงู„ุฅุทู„ุงู‚ุŸ




ุงุชุถุญ ุฃู† ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ ู„ุง ุชุนู…ู„ ุนู„ู‰ ุงู„ุฅุทู„ุงู‚. ู„ู‚ุฏ ุญูŠุฑู†ุง ู„ูุชุฑุฉ ุทูˆูŠู„ุฉ ุญูˆู„ ุงู„ุฃุญุฏุงุซ ุงู„ุชูŠ ูŠุฌุจ ุฃู† ูŠุชู… ุงูƒุชุดุงูู‡ุง ุญุชู‰ ู†ูู‡ู… ุฃู† ุงู„ุชุทุจูŠู‚ ุจุฏุฃ ุจุงู„ูุนู„. ูˆุงุชุถุญ ุฃู† ุงู„ุฃุญุฏุงุซ ุงู„ุชูŠ ูƒู†ุง ู†ุชุญุฏุซ ุนู†ู‡ุง ุชุธู‡ุฑ ุงู„ุขู† ุนู†ุฏู…ุง ุชุณุญุจ ุงู„ุฃุณุงู„ูŠุจ ุจู‚ูˆุฉ ู…ู† ุงู„ุณูŠุงู‚:


  • ctx.start(); -> ContextStartedEvent
  • ctx.stop(); -> ContextStoppedEvent

ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุณุชุฃุชูŠ SpringApplication.run ูู‚ุท ููŠ ุญุงู„ุฉ ุชุดุบูŠู„ SpringApplication.run ุŒ ูˆุงู„ุญุตูˆู„ ุนู„ู‰ ุงู„ุณูŠุงู‚ ุŒ ูˆุณุญุจ ctx.start(); ู…ู†ู‡ ctx.start(); ุฃูˆ ctx.stop(); . ู„ูŠุณ ู…ู† ุงู„ูˆุงุถุญ ู„ู…ุงุฐุง ู‡ุฐุง ุถุฑูˆุฑูŠ. ูˆู„ูƒู† ุŒ ู…ุฑุฉ ุฃุฎุฑู‰ ุŒ ุฃุนุทูˆูƒ ู†ู‚ุทุฉ ุชู…ุฏูŠุฏ.


ู‡ู„ ุงู„ุฑุจูŠุน ู„ู‡ ุนู„ุงู‚ุฉ ุจู‡ุฐุงุŸ ุฅุฐุง ูƒุงู† ุงู„ุฃู…ุฑ ูƒุฐู„ูƒ ุŒ ูŠุฌุจ ุฃู† ูŠูƒูˆู† ู‡ู†ุงูƒ ุงุณุชุซู†ุงุก ููŠ ู…ูƒุงู† ู…ุง:


  • ctx.stop(); (1)
  • ctx.start(); (2)
  • ctx.close(); (3)
  • ctx.start(); (4)

ููŠ ุงู„ูˆุงู‚ุน ุŒ ุณูŠูƒูˆู† ุนู„ู‰ ุงู„ุณุทุฑ ุงู„ุฃุฎูŠุฑ ุŒ ู„ุฃู†ู‡ ุจุนุฏ ctx.close(); ู„ุง ูŠู…ูƒู† ูุนู„ ุดูŠุก ู…ุน ุงู„ุณูŠุงู‚. ูˆู„ูƒู† ุงุณุชุฏุนุงุก ctx.stop(); ู‚ุจู„ ctx.start(); - ูŠู…ูƒู†ูƒ (ุงู„ุฑุจูŠุน ูŠุชุฌุงู‡ู„ ู‡ุฐู‡ ุงู„ุฃุญุฏุงุซ - ู‡ู… ูู‚ุท ู„ูƒ).


ุงูƒุชุจ ู…ุณุชู…ุนูŠูƒ ุŒ ุงุณุชู…ุน ุฅู„ู‰ ู†ูุณูƒ ุŒ ุชูˆุตู„ ุฅู„ู‰ ctx.stop(); ุŒ ู…ุงุฐุง ุชูุนู„ ุนู„ู‰ ctx.stop(); ุŒ ูˆู…ุงุฐุง ุชูุนู„ ุนู„ู‰ ctx.start(); .


ููŠ ุงู„ู…ุฌู…ูˆุน ุŒ ูŠุจุฏูˆ ู…ุฎุทุท ุงู„ุชูุงุนู„ ูˆุฏูˆุฑุฉ ุงู„ุญูŠุงุฉ ู„ู„ุชุทุจูŠู‚ ุนู„ู‰ ุงู„ู†ุญูˆ ุงู„ุชุงู„ูŠ:




ุชุธู‡ุฑ ุงู„ุฃู„ูˆุงู† ู‡ู†ุง ูุชุฑุงุช ู…ุฎุชู„ูุฉ ู…ู† ุงู„ุญูŠุงุฉ.


  • Blue ู‡ูˆ Spring Boot ุŒ ูˆู‚ุฏ ุจุฏุฃ ุงู„ุชุทุจูŠู‚ ุจุงู„ูุนู„. ู‡ุฐุง ูŠุนู†ูŠ ุฃู† ุทู„ุจุงุช ุฎุฏู…ุฉ Tomcat ุงู„ุชูŠ ุชุตู„ ุฅู„ูŠู‡ุง ู…ู† ุงู„ุนู…ู„ุงุก ุชุชู… ู…ุนุงู„ุฌุชู‡ุง ุŒ ูˆูŠุชู… ุฑูุน ุงู„ุณูŠุงู‚ ุจุฃูƒู…ู„ู‡ ุจุงู„ุชุฃูƒูŠุฏ ุŒ ูˆุชุนู…ู„ ุฌู…ูŠุน ุงู„ุญุจูˆุจ ุŒ ูˆู‚ูˆุงุนุฏ ุงู„ุจูŠุงู†ุงุช ู…ุชุตู„ุฉ ุŒ ุฅู„ุฎ.
  • ุฃุฎุถุฑ - ูˆุตู„ ุญุฏุซ ContextRefreshedEvent ูˆุชู… ุจู†ุงุก ุงู„ุณูŠุงู‚. ู…ู† ู‡ุฐู‡ ุงู„ู„ุญุธุฉ ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ูŠุจุฏุฃ ู…ุณุชู…ุนูˆ ุงู„ุชุทุจูŠู‚ ููŠ ุงู„ุนู…ู„ ุŒ ูˆุงู„ุชูŠ ุชู‚ูˆู… ุจุชู†ููŠุฐู‡ุง ุฅู…ุง ุนู† ุทุฑูŠู‚ ุชุนูŠูŠู† ุงู„ุชุนู„ูŠู‚ ุงู„ุชูˆุถูŠุญูŠ ApplicationListener ุŒ ุฃูˆ ู…ู† ุฎู„ุงู„ ูˆุงุฌู‡ุฉ ู…ุณู…ู‰ ู…ุน ุนุงู… ูŠุณุชู…ุน ุฅู„ู‰ ุฃุญุฏุงุซ ู…ุนูŠู†ุฉ. ุฅุฐุง ูƒู†ุช ุชุฑุบุจ ููŠ ุชู„ู‚ูŠ ุงู„ู…ุฒูŠุฏ ู…ู† ุงู„ุฃุญุฏุงุซ ุŒ ูุฃู†ุช ุจุญุงุฌุฉ ุฅู„ู‰ ูƒุชุงุจุฉ ApplicationListener ู†ูุณู‡ ููŠ spring.factories (ูŠุนู…ู„ ุงู„ุฑุจูŠุน ุงู„ู…ุนุชุงุฏ ู‡ู†ุง). ูŠุดูŠุฑ ุงู„ุดุฑูŠุท ุฅู„ู‰ ู…ูƒุงู† ุจุฏุก ุชู‚ุฑูŠุฑ Spring Ripper .
  • ููŠ ู…ุฑุญู„ุฉ ุณุงุจู‚ุฉ ุŒ ูŠุนู…ู„ SpringApplication ุŒ ุงู„ุฐูŠ ูŠุนุฏ ุงู„ุณูŠุงู‚ ู„ู†ุง. ู‡ุฐู‡ ู‡ูŠ ู…ู‡ู…ุฉ ุฅุนุฏุงุฏ ุงู„ุชุทุจูŠู‚ ุงู„ุฐูŠ ู‚ู…ู†ุง ุจู‡ ุนู†ุฏู…ุง ูƒู†ุง ู…ุทูˆุฑูŠู† ุงู„ุฑุจูŠุน ุงู„ุนุงุฏูŠูŠู†. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุชูƒูˆูŠู† WebXML.
  • ูˆู„ูƒู† ู‡ู†ุงูƒ ู…ุฑุงุญู„ ุณุงุจู‚ุฉ. ูˆูŠุจูŠู† ู…ู† ูˆุฃูŠู† ูˆู…ู† ูŠุนู…ู„.
  • ู„ุง ุชุฒุงู„ ู‡ู†ุงูƒ ู…ุฑุญู„ุฉ ุฑู…ุงุฏูŠุฉ ู„ุง ูŠู…ูƒู† ููŠู‡ุง ุงู„ุฅุณููŠู† ุจุฃูŠ ุดูƒู„ ู…ู† ุงู„ุฃุดูƒุงู„. ู‡ุฐู‡ ู‡ูŠ ุงู„ู…ุฑุญู„ุฉ ุงู„ุชูŠ ูŠู†ูุฏ ููŠู‡ุง ุชุทุจูŠู‚ SpringApplication ู…ู† ุฎุงุฑุฌ ู…ู†ุทู‚ุฉ ุงู„ุฌุฒุงุก (ุงุฏุฎู„ ุงู„ุฑู…ุฒ ูู‚ุท).

ุฅุฐุง ู„ุงุญุธุช ุŒ ุฎู„ุงู„ ุงู„ุชู‚ุฑูŠุฑ ุงู„ู…ูƒูˆู† ู…ู† ุฌุฒุฃูŠู† ุŒ ูู‚ุฏ ุงู†ุชู‚ู„ู†ุง ู…ู† ุงู„ูŠู…ูŠู† ุฅู„ู‰ ุงู„ูŠุณุงุฑ: ู„ู‚ุฏ ุจุฏุฃู†ุง ู…ู† ุงู„ู†ู‡ุงูŠุฉ ุŒ ูู‚ู…ู†ุง ุจู„ู ุงู„ุชูƒูˆูŠู† ุงู„ุฐูŠ ุฎุฑุฌ ู…ู† ุงู„ุจุฏุงูŠุฉ ุŒ ุซู… ุฃุถูู†ุง ู…ุง ูŠู„ูŠ ุŒ ูˆู…ุง ุฅู„ู‰ ุฐู„ูƒ. ุงู„ุขู† ุฏุนูˆู†ุง ู†ุชุญุฏุซ ุจุณุฑุนุฉ ุนู† ุงู„ุณู„ุณู„ุฉ ุจุฃูƒู…ู„ู‡ุง ููŠ ุงู„ุงุชุฌุงู‡ ุงู„ู…ุนุงูƒุณ.
ุชูƒุชุจ ููŠ SpringApplication.run ุงู„ุฑุฆูŠุณูŠ ุงู„ุฎุงุต ุจูƒ. ูŠุฌุฏ ู…ุณุชู…ุนูŠู† ู…ุฎุชู„ููŠู† ุŒ ูˆูŠุฑู…ูŠู‡ู… ุจุญุฏุซ ุจุฏุฃ ููŠ ุจู†ุงุฆู‡. ุจุนุฏ ุฐู„ูƒ ุŒ ูŠุนุซุฑ ุงู„ู…ุณุชู…ุนูˆู† ุนู„ู‰ EnvironmentPostProcessor ุŒ ูˆูŠุณู…ุญ ู„ู‡ู… ุจุชู‡ูŠุฆุฉ ุงู„ุจูŠุฆุฉ. ุจู…ุฌุฑุฏ ุฅุนุฏุงุฏ ุงู„ุจูŠุฆุฉ ุŒ ู†ุจุฏุฃ ููŠ ุจู†ุงุก ุงู„ุณูŠุงู‚ (ูŠุฏุฎู„ ูƒุงุฑู„ุณูˆู†). ูŠุจู†ูŠ ูƒุงุฑู„ุณูˆู† ุงู„ุณูŠุงู‚ ูˆูŠุชูŠุญ ู„ุฌู…ูŠุน ู…ูู‡ูŠู‘ุฆูŠ ุงู„ุชุทุจูŠู‚ุงุช ูุนู„ ุดูŠุก ุจู‡ุฐุง ุงู„ุณูŠุงู‚. ู„ุฏูŠู†ุง ู†ู‚ุทุฉ ุชู…ุฏูŠุฏ. ุจุนุฏ ุฐู„ูƒ ุŒ ูŠุชู… ุชูƒูˆูŠู† ุงู„ุณูŠุงู‚ ุจุงู„ูุนู„ ุซู… ูŠุจุฏุฃ ู†ูุณ ุงู„ุดูŠุก ููŠ ุญุฏูˆุซ ุชุทุจูŠู‚ ุงู„ุฑุจูŠุน ุงู„ู…ุนุชุงุฏ ุŒ ุนู†ุฏู…ุง ูŠุชู… ุจู†ุงุก ุงู„ุณูŠุงู‚ - BeanFactoryPostProcessor ุŒ BeanPostProcessor ุŒ ูŠุชู… ุชูƒูˆูŠู† ุงู„ูุงุตูˆู„ูŠุง. ู‡ุฐุง ู…ุง ูŠูุนู„ู‡ ุงู„ุฑุจูŠุน ุงู„ุนุงุฏูŠ.


ูƒูŠู ุชุฑูƒุถ


ู„ู‚ุฏ ุงู†ุชู‡ูŠู†ุง ู…ู† ู…ู†ุงู‚ุดุฉ ุนู…ู„ูŠุฉ ูƒุชุงุจุฉ ุงู„ุทู„ุจ.


ูˆู„ูƒู† ูƒุงู† ู„ุฏูŠู†ุง ุดูŠุก ุขุฎุฑ ู„ุง ูŠุนุฌุจ ุงู„ู…ุทูˆุฑูŠู†. ุฅู†ู‡ู… ู„ุง ูŠุญุจูˆู† ุงู„ุชููƒูŠุฑ ููŠ ูƒูŠููŠุฉ ุจุฏุก ุชุทุจูŠู‚ู‡ู… ููŠ ุงู„ู†ู‡ุงูŠุฉ. ู‡ู„ ุณูŠู‚ูˆู… ุงู„ู…ุดุฑู ุจุชุดุบูŠู„ู‡ ููŠ Tomcat ุฃูˆ JBoss ุฃูˆ WebLogicุŸ ุนู„ูŠู‡ุง ูู‚ุท ุฃู† ุชุนู…ู„. ุฅุฐุง ู„ู… ูŠูู„ุญ ุฐู„ูƒ ุŒ ููŠ ุฃุณูˆุฃ ุงู„ุฃุญูˆุงู„ ุŒ ุณูŠุชุนูŠู† ุนู„ู‰ ุงู„ู…ุทูˆุฑ ุชูƒูˆูŠู† ุดูŠุก ู…ุง ู…ุฑุฉ ุฃุฎุฑู‰


ุฅุฐู† ู…ุง ู‡ูŠ ุทุฑู‚ ุฅุทู„ุงู‚ู†ุงุŸ


  • ุญุฑุจ ุงู„ู‚ุทุท
  • ููƒุฑุฉ ุ›
  • java -jar/war .

Tomcat ู„ูŠุณ ุงุชุฌุงู‡ู‹ุง ุฌู…ุงู‡ูŠุฑูŠู‹ุง ุŒ ูู„ู† ู†ุชุญุฏุซ ุนู†ู‡ ุจุงู„ุชูุตูŠู„.


ูƒู…ุง ุฃู† ุงู„ููƒุฑุฉ ู„ูŠุณุช ู…ุซูŠุฑุฉ ู„ู„ุงู‡ุชู…ุงู… ู…ู† ุญูŠุซ ุงู„ู…ุจุฏุฃ. ุฅู†ู‡ุง ุฃุตุนุจ ู‚ู„ูŠู„ุงู‹ ู…ู…ุง ุณุฃู‚ูˆู„ู‡ ุฃุฏู†ุงู‡. ูˆู„ูƒู† ููŠ ุงู„ููƒุฑุฉ ุŒ ู…ู† ุญูŠุซ ุงู„ู…ุจุฏุฃ ุŒ ู„ุง ูŠู†ุจุบูŠ ุฃู† ุชูƒูˆู† ู‡ู†ุงูƒ ู…ุดุงูƒู„. ุฅู†ู‡ุง ุชุฑู‰ ุฃูŠ ู†ูˆุน ู…ู† ุงู„ุชุจุนูŠุงุช ุงู„ุชูŠ ุณูŠุฌู„ุจู‡ุง ุงู„ู…ุจุชุฏุฆ.
ุฅุฐุง ูุนู„ู†ุง java -jar ุŒ ูุฅู† ุงู„ู…ุดูƒู„ุฉ ุงู„ุฑุฆูŠุณูŠุฉ ู‡ูŠ ุจู†ุงุก ู…ุณุงุฑ classpath ู‚ุจู„ ุฅุทู„ุงู‚ ุงู„ุชุทุจูŠู‚.


ู…ุงุฐุง ูุนู„ ุงู„ู†ุงุณ ููŠ ุนุงู… 2001ุŸ ูƒุชุจูˆุง java -jar jar ุฃูŠ ุฌุฑุฉ ูŠุฌุจ ุชุดุบูŠู„ู‡ุง ุŒ ุซู… ู…ุณุงูุฉ ุŒ classpath=... java -jar ุฅู„ู‰ ุงู„ู†ุตูˆุต ู‡ู†ุงูƒ. ููŠ ุญุงู„ุชู†ุง ุŒ ู‡ู†ุงูƒ 150 ู…ูŠุบุงุจุงูŠุช ู…ู† ุงู„ุชุจุนูŠุงุช ุงู„ู…ุฎุชู„ูุฉ ุงู„ุชูŠ ุฃุถุงูู‡ุง ุงู„ู…ุจุชุฏุฆูˆู†. ูˆูƒู„ ู‡ุฐุง ูŠุฌุจ ุฃู† ูŠุชู… ูŠุฏูˆูŠู‹ุง. ุจุทุจูŠุนุฉ ุงู„ุญุงู„ ุŒ ู„ุง ุฃุญุฏ ูŠูุนู„ ุฐู„ูƒ. ู†ูƒุชุจ ูู‚ุท: java -jar jar ุŒ ุฃูŠ ุฌุฑุฉ ูŠุฌุจ ุชุดุบูŠู„ู‡ุง ูˆู‡ุฐุง ูƒู„ ุดูŠุก. ุจุทุฑูŠู‚ุฉ ู…ุง ู„ุง ูŠุฒุงู„ ูŠุฌุฑูŠ ุจู†ุงุก ู…ุณุงุฑ ุงู„ูุตู„. ุณู†ุชุญุฏุซ ุนู† ู‡ุฐุง ุงู„ุขู†.


ุฏุนู†ุง ู†ุจุฏุฃ ุจุฅุนุฏุงุฏ ู…ู„ู jar ุญุชู‰ ูŠู…ูƒู† ุชุดุบูŠู„ู‡ ุจุฏูˆู† Tomcat. ู‚ุจู„ ุนู…ู„ java -jar ุŒ ุนู„ูŠูƒ ุจู†ุงุก ุจุฑุทู…ุงู†. ู…ู† ุงู„ูˆุงุถุญ ุฃู† ู‡ุฐู‡ ุงู„ุฌุฑุฉ ุบูŠุฑ ุนุงุฏูŠุฉ ุŒ ู†ูˆุนู‹ุง ู…ุง ู…ู† ุงู„ุชู†ุงุธุฑูŠุฉ ุงู„ุญุฑุจูŠุฉ ุŒ ุญูŠุซ ุณูŠูƒูˆู† ูƒู„ ุดูŠุก ููŠ ุงู„ุฏุงุฎู„ ุŒ ุจู…ุง ููŠ ุฐู„ูƒ Tomcat ุงู„ู…ุถู…ู†ุฉ.


 <build> <plugins>    <plugin>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-maven-plugin</artifactId>    </plugin> </plugins> </build> 

ุนู†ุฏู…ุง ู‚ู…ู†ุง ุจุชู†ุฒูŠู„ ุงู„ู…ุดุฑูˆุน ุŒ ู‚ุงู… ุดุฎุต ู…ุง ุจุงู„ูุนู„ ุจุชุณุฌูŠู„ ู…ูƒูˆู† ุฅุถุงููŠ ููŠ ุฏู„ูŠู„ ุนู…ู„ูŠุงุชู†ุง. ู‡ู†ุง ุŒ ุจุงู„ู…ู†ุงุณุจุฉ ุŒ ูŠู…ูƒู†ูƒ ุฑู…ูŠ ุงู„ุชูƒูˆูŠู†ุงุช ุŒ ูˆู„ูƒู† ุงู„ู…ุฒูŠุฏ ุนู† ุฐู„ูƒ ู„ุงุญู‚ู‹ุง. jar, Maven Gradle , jar . :




:




war-.


, .


, jar. java -jar , , , , org.springframework.boot . . org.springframework.boot package. META-INF




Spring Boot MANIFEST ( Maven Gradle), main class, jar-.


, jar- : -, main-. java -jar -jar, , main-class-.


, , MANIFEST, main-class , main ( Idea). , . class path? java -jar , main, , โ€” main, . MANIFEST JarLauncher.




ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ , , JarLauncher. , main, class path.
, main? property โ€” Start-class .


ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ . class path jar. , โ€” org.springframework.boot โ€” class path. org.springframework.boot.loader.JarLauncher main-class. , main-class . class path, BOOT-INF ( lib class , ).


RavenApplication, properties class BOOT-INF , , Tomcat , BOOT-INF/lib/ . JarLauncher classpath, โ€” , start-class . Spring, ContextSpringApplication โ€” flow, .


, start-class-? , . , .


, . property, mainClass , MANIFEST Start-Class , mainClass โ€” JarLauncher.


, mainClass, ? . Spring boot plugin โ€“ mainClass:


  • โ€“ . โ€” main class;
  • โ€“ , mainClass @SpringBootApplication , , , ;
  • โ€” exception , main class, , jar- . ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ , , . , , main class.
  • @SpringBootApplication โ€” .

JarLauncher . Tomcat WarLauncher, war- , jar-.


, java -jar . ? ูŠู…ูƒู†ูƒ. .


 <build> <plugins>    <plugin>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-maven-plugin</artifactId>       <configuration>          <executable>true</executable>       </configuration>    </plugin> </plugins> </build> 

<configuration> <executable>true</executable> Gradle , :


 springBoot { executable = true } 

jar executable jar. .


, . Windows , exe-, . Spring Boot, .. jar, . , .
?


(jar โ€” zip-, ):




Spring Boot - .


-, jar-. , , โ€” #!/bin/bash . .


. exit 0 - โ€” zip-.




, zip- โ€” 0xf4ra . , , .




(, ..).


jar :


  • โ€” ;
  • , " bash" ( #!/bin/bash );
  • bash ;
  • exit 0 ;
  • java -jar โ€” jar-, ;
  • java -jar zip- jar-, , , .

ุงู„ุงุณุชู†ุชุงุฌุงุช


, Spring Boot โ€” , , .


-, . , Spring, Spring โ€” Spring Boot. , , โ€” , , , . , , Spring, Spring Boot .


-, @SpringBootApplication , best practice, Spring-.


โ€” , , . property environment variable, var arg , , JSON. @value , . configuration properties , , , . , Spring . , , .


. , . Spring, Spring Boot . - , , , .




ุฏู‚ูŠู‚ุฉ ู…ู† ุงู„ุฏุนุงูŠุฉ. 19-20 Joker 2018, ยซ [Joker Edition]ยป , ยซMicronaut vs Spring Boot, ?ยป . , Joker . .

Source: https://habr.com/ru/post/ar425333/


All Articles