{"id":290372,"date":"2018-10-05T13:15:02","date_gmt":"2018-10-05T09:15:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=290372"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=290372","title":{"rendered":"Boot yourself, Spring is coming (\u0427\u0430\u0441\u0442\u044c 2)"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p>\u0415\u0432\u0433\u0435\u043d\u0438\u0439 <a href=\"https:\/\/habr.com\/users\/evgenyborisov\/\" class=\"user_link\">EvgenyBorisov<\/a> \u0411\u043e\u0440\u0438\u0441\u043e\u0432 (NAYA Technologies) \u0438 \u041a\u0438\u0440\u0438\u043b\u043b <a href=\"https:\/\/habr.com\/users\/tolkkv\/\" class=\"user_link\">tolkkv<\/a> \u0422\u043e\u043b\u043a\u0430\u0447\u0435\u0432 (\u0426\u0438\u0430\u043d.\u0424\u0438\u043d\u0430\u043d\u0441, <a href=\"https:\/\/twitter.com\/tolkv\">\u0422\u0432\u0438\u0442\u0442\u0435\u0440<\/a>) \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 Spring Boot \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447 \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0416\u0435\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0431\u0430\u043d\u043a\u0430 \u0411\u0440\u0430\u0430\u0432\u043e\u0441\u0430. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445 \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/iH2PrlDVZVfLhtUKaUtfgt-FbjXu4IMf-_ZhqD85e8toWdVxJxzY2nDsTC8vMkn7PSMjpTBtLiVR_ef2exiqszPmQ_2lTOJPx0CTPKJ2RrLB8JFoT8R32kHS_grt6srdxvKTFpUh\"\/><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/7Cq5zEm2wq0?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/habr.com\/company\/jugru\/blog\/424503\/\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0432\u043e\u0440\u043e\u043d\u0430. \u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c. \u0417\u0438\u043c\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b\u0430, \u0441\u0442\u0435\u043d\u0430 \u0443\u043f\u0430\u043b\u0430.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0432\u044b\u0434\u0430\u0447\u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 50% \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0438 \u0432\u0441\u0435\u043c, \u043a\u0440\u043e\u043c\u0435 \u0421\u0442\u0430\u0440\u043a\u043e\u0432, \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0434\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043e\u043b\u0433\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432\u044b\u0434\u0430\u0447\u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0435. \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0444\u0438\u043b\u0438\u0430\u043b\u043e\u0432 \u0431\u0430\u043d\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u0437\u0438\u043c\u0430 \u0443\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u0430, \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e-\u0441\u0442\u0430\u0440\u043e\u043c\u0443. \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442, \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442 \u0438\u043b\u0438 \u043d\u0435\u0442. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0438\u043c\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0418\u0434\u0435\u043c \u0432 \u043d\u0430\u0448\u0443 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class WhiteListBasedProphetService implements ProphetService {  \u00a0@Override  \u00a0public boolean willSurvive(String name) {  \u00a0\u00a0\u00a0return false;  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0442\u0435\u0445, \u043a\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043e\u043b\u0433\u0438.<\/p>\n<p>  <\/p>\n<pre><code>spring:  \u00a0application.name: money-raven  \u00a0jpa.hibernate.ddl-auto: validate  ironbank:  \u00a0\u0442\u0435-\u043a\u0442\u043e-\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442-\u0434\u043e\u043b\u0433\u0438:  \u00a0\u00a0\u00a0- \u041b\u0430\u043d\u0438\u0441\u0442\u0435\u0440\u044b  \u0432\u043e\u0440\u043e\u043d:  \u00a0\u043a\u0443\u0434\u0430-\u043b\u0435\u0442\u0435\u0442\u044c: \u0431\u0440\u0430\u0430\u0432\u043e\u0441, \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0431\u0430\u043d\u043a  \u00a0\u0432\u043a\u043b: true<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 property \u2014 <code>\u0442\u0435\u041a\u0442\u043e\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0414\u043e\u043b\u0433\u0438<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ProphetProperties {  \u00a0List&lt;String&gt; \u0442\u0435\u041a\u0442\u043e\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0414\u043e\u043b\u0433\u0438; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0440\u0430\u0437\u044b, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0436\u0435\u043a\u0442\u0438\u043c \u0435\u0433\u043e \u0441\u044e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class WhiteListBasedProphetService implements ProphetService { \u00a0   private final ProphetProperties prophetProperties;  \u00a0@Override  \u00a0public boolean willSurvive(String name) {  \u00a0\u00a0\u00a0return false;  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u043e constructor injection (\u043f\u0440\u043e \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438):<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">@Service @RequiredArgsConstructor public class WhiteListBasedProphetService implements ProphetService {  \u00a0private final ProphetProperties prophetProperties;  \u00a0@Override  \u00a0public boolean willSurvive(String name) {  \u00a0\u00a0\u00a0return false;  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u043e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043e\u043b\u0433\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">@Service @RequiredArgsConstructor public class WhiteListBasedProphetService implements ProphetService {  \u00a0private final ProphetProperties prophetProperties;  \u00a0@Override  \u00a0public boolean willSurvive(String name) {   return prophetProperties.get\u0422\u0435\u041a\u0442\u043e\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0414\u043e\u043b\u0433\u0438().contains(name);  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0442\u0443\u0442 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0434\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">Description  Parameter 1 of constructor in com.ironbank.moneyraven.service.TransferMoneyProphecyBackend\u2026   - nameBasedProphetService: defined in file [\/Users\/tolkv\/git\/conferences\/spring-boot-ripper\u2026   - WhileListBackendProphetService: defined in file [\/Users\/tolkv\/git\/conferences\/spring-boot-ripper...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u0431\u0438\u043d\u044b \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c. \u041f\u0440\u043e\u0444\u0438\u043b\u044c <code>\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430<\/code> \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c <code>\u0437\u0438\u043c\u0430\u0411\u043b\u0438\u0437\u043a\u043e<\/code>. \u041f\u0443\u0441\u0442\u044c \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 <code>\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">@Service @Profile(ProfileConstants.\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430) @RequiredArgsConstructor public class WhiteListBasedProphetService implements ProphetService {  \u00a0private final ProphetProperties prophetProperties;  \u00a0@Override  \u00a0public boolean willSurvive(String name) {  \u00a0\u00a0\u00a0return prophetProperties.get\u0422\u0435\u041a\u0442\u043e\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0414\u043e\u043b\u0433\u0438().contains(name);  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0441\u0442\u0430\u0440\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u2014 \u0432 <code>\u0437\u0438\u043c\u0430\u0411\u043b\u0438\u0437\u043a\u043e<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">@Service @Profile(ProfileConstants.\u0437\u0438\u043c\u0430\u0411\u043b\u0438\u0437\u043a\u043e) public class NameBasedProphetService implements ProphetService {  \u00a0@Override  \u00a0public boolean willSurvive(String name) {  \u00a0\u00a0\u00a0return !name.contains(&quot;Stark&quot;) &amp;&amp; ThreadLocalRandom.current().nextBoolean();  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0437\u0438\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u0412 \u043a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u0430\u0445, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0435\u043d\u043e\u0439, \u0443\u0436\u0435 \u0437\u0438\u043c\u0430. \u0410 \u0432\u043e\u0442 \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u044e\u0433\u0435 \u2014 \u0435\u0449\u0435 \u043d\u0435\u0442. \u0422.\u0435. \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0438\u043b\u0438\u0430\u043b\u0430\u0445 \u0438 \u0442\u0430\u0439\u043c-\u0437\u043e\u043d\u0430\u0445, \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u0442\u0435\u0440\u0435\u0442\u044c \u0441\u0442\u0430\u0440\u0443\u044e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0437\u0438\u043c\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b\u0430, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u041c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e: \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043b\u0435\u0442\u0430 \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0437\u0438\u043c\u044b. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442 \u0437\u0438\u043c\u0430, \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442 \u0435\u0433\u043e \u0438 \u0432\u0441\u0435. \u041e\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u0434, \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u043d\u0430\u0441 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f: \u0447\u0430\u0441\u0442\u044c \u0431\u0438\u043d\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043b\u0435\u0442\u043e, \u0430 \u0447\u0430\u0441\u0442\u044c \u0431\u0438\u043d\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u0438\u043c\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/vG3hUTCIjpNQYFmsGNjQqcr9V4YDTcdjW76XS5Jypfx2_d-zYX41eKCS41KA7mm_2-A_OkVxq0fwv9NFsRV7K08cSb1DcY5KrM8K4zz6yj5CpGpjpBDagI-Lng1RiDyAVLnGDkb5\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430.<\/p>\n<p>  <\/p>\n<h2>\u0416\u0435\u043b\u0435\u0437\u043d\u044b\u0439 \u0437\u0430\u043a\u043e\u043d 2. \u0411\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0435\u043b\u044c\u0437\u044f<\/h2>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/6WheZegCKaGKDfnXQ3d9SLvtAASS_ksACZpgjPRHRUIM_0ZvmdsYzTy99zRct5yRB1R22k0R6IXi23n6xec61DCQaqmL549hqVrdc-3CaSwBQuEyGFZZf7ViEV1heB2bdkWIpbT1\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0438\u043c\u0430 \u0443\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u0430, \u0432\u0441\u0435 \u0441\u0442\u0430\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e. \u0415\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, <code>\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430<\/code> \u0438\u043b\u0438 <code>\u0437\u0438\u043c\u0430\u0411\u043b\u0438\u0437\u043a\u043e<\/code>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 exception, \u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0432\u044b\u0448\u0435. \u041e\u043d \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442. \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0435 \u0437\u0430\u0434\u0430\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <code>ProphetService<\/code>. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0448\u0442\u0443\u043a\u0443 \u0432 \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u0442\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0437\u0430\u0434\u0430\u043d. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0437\u0430\u0434\u0430\u043d, \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0438 \u043a\u0438\u043d\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 exception (\u0430 \u043d\u0435 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c exception \u043e \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u0431\u0438\u043d\u0430).<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u0435\u043c \u043b\u0438 \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e application listener? \u041d\u0435\u0442. \u0418 \u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li>Single responsibility listener \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0440\u043e\u043d \u043b\u0435\u0442\u0435\u043b. Listener \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0431\u044b\u043b \u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0430\u043c listener, \u043d\u043e \u0438 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/li>\n<li>\u041a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438. \u0418 \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c.<\/li>\n<li>Listener \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0444\u0440\u0435\u0448\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. \u0410 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0435\u0442, \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u044c\u0448\u0435. \u0417\u0430\u0447\u0435\u043c \u0436\u0434\u0430\u0442\u044c \u044d\u0442\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u043f\u043e\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442\u0441\u044f, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0441\u0435 \u0443\u043f\u0430\u0434\u0435\u0442.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u0435\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e, \u043a\u0430\u043a\u0438\u0435 \u0431\u0430\u0433\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u043c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0430\u0434\u043e \u0432\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435. \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c Spring Cloud, \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <code>ApplicationContextInitializer<\/code>. \u042d\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0442\u043e\u0447\u043a\u0443 Spring, \u0443\u043a\u0430\u0437\u0430\u0432 \u0435\u0433\u043e \u0432 spring.factories. <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/gXq5PdyE3hHt8rYKCC6Hppg1P4TG-p22xRw1R-jLuScgcJyJPChXq3cWqRjmMon-DWl4CATzpcE3_aqOPv6tB4gVj9EduQ-Cg882RiNctgXFAt4HdIH4MY03vMV1iOzcguGBANdc\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0438 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Context Initializer, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c <code>ConfigurableApplicationContext<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ProfileCheckAppInitializer implements ApplicationContextInitializer&lt;ConfigurableApplicationContext&gt; {  \u00a0@Override  \u00a0public void initialize(ConfigurableApplicationContext applicationContext) {  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u044c environment \u2014 \u0448\u0442\u0443\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b SpringApplication. \u0422\u0443\u0434\u0430 \u043f\u043e\u043f\u0430\u043b\u0438 \u0432\u0441\u0435 property, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438. \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438. <\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0442\u0430\u043c \u043d\u0435\u0442, \u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u0438\u043d\u0443\u0442\u044c exception \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ProfileCheckAppInitializer implements ApplicationContextInitializer&lt;ConfigurableApplicationContext&gt; {  \u00a0@Override  \u00a0public void initialize(ConfigurableApplicationContext applicationContext) {   if applicationContext.getEnvironment().getActiveProfiles().length == 0 {  \u00a0\u00a0\u00a0\u00a0\u00a0throw new RuntimeException(&quot;\u041d\u0435\u043b\u044c\u0437\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f!&quot;);  \u00a0\u00a0\u00a0}  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 spring.factories.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">org.springframework.boot.context.properties.EnableConfigurationProperties=com.ironbank.moneyraven.starter.IronConfiguration org.springframework.context.ApplicationContextInitializer=com.ironbank.moneyraven.starter.ProfileCheckAppInitializer<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0437 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <code>ApplicationContextInitializer<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435\u043a\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. <code>ApplicationContextInitializer<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c\u0441\u044f, \u0435\u0449\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0431\u0438\u043d\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 <code>ApplicationContextInitializer<\/code>, \u043f\u043e\u0447\u0435\u043c\u0443 \u0435\u0433\u043e, \u043a\u0430\u043a listener, \u043d\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u044f\u043d\u0435\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435? \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442: \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u044c\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. \u0422.\u0435. \u0435\u0433\u043e \u0435\u0449\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0438\u043d\u0436\u0435\u043a\u0442\u0438\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0448\u0442\u0443\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430: \u0432\u0441\u0435 \u043f\u043e\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u043e, \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0438 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u0432\u043e\u0440\u043e\u043d \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p><code>ApplicationContextInitializer<\/code> \u2014 \u00a0\u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d, \u043d\u043e \u0435\u0449\u0435 \u0432 \u043d\u0435\u043c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 environment.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/zgKhOZk9NBrXxF6_vM3UipUkG0ik4PYbqUWypewJ7SJKVJ-tzoHgxDfjYwtQCSBsdz-TxA9nBfF67cpLMf_adOyU23ZOsQeTHqBZo6RkOYnlzLecx7rXYe0ypdk49MGQueCKVNCb\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041a\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 environment? \u041a\u0430\u0440\u043b\u0441\u043e\u043d \u2014 <code>SpringBootApplication<\/code>. \u041e\u043d \u0436\u0435 \u0435\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u043d\u043e\u0439 \u043c\u0435\u0442\u0430-\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0442\u043e\u043c \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0440\u0433\u0430\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0432\u0435\u0449\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u043d\u0436\u0435\u043a\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>@value<\/code>, \u0447\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 environment, \u043a\u0430\u043a \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u044e\u0434\u0430 \u0437\u0430\u0445\u043e\u0434\u044f\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 property:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c Spring Boot;<\/li>\n<li>\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443;<\/li>\n<li>\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435;<\/li>\n<li>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a environment variables;<\/li>\n<li>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 application properties;<\/li>\n<li>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0445 property-\u0444\u0430\u0439\u043b\u0430\u0445.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u0435\u0442\u0438\u0442\u0441\u044f \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 environment. \u0422\u0443\u0434\u0430 \u0436\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b. \u041e\u0431\u044a\u0435\u043a\u0442 environment \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 Spring Boot \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<p>  <\/p>\n<p>\u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0435\u0441\u043b\u0438 \u043b\u044e\u0434\u0438 \u0437\u0430\u0431\u044b\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0440\u0443\u043a\u0430\u043c\u0438 (\u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e\u0431\u044b \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043c\u043e\u0449\u043d\u044b \u0431\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u0447\u0442\u043e\u0431\u044b \u0443 \u043d\u0438\u0445 \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043d\u0438 \u043e\u0442 \u0447\u0435\u0433\u043e). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0434\u043e\u043f\u0438\u0448\u0435\u043c \u0432 \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u0442\u0435\u0440 \u0448\u0442\u0443\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u2014 <code>\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430<\/code> \u0438\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u0443\u043b\u0438\u0446\u0435. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0432\u0441\u0435\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u2014 <code>EnvironmentPostProcessor<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>ApplicationContextInitializer<\/code>. \u0410 \u0434\u043e <code>ApplicationContextInitializer<\/code> \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e <code>EnvironmentPostProcessor<\/code>. <\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043e\u043f\u044f\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0422\u0443\u0442 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 <code>ConfigurableEnvironment<\/code> \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 <code>SpringApplication<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>ConfigurableContext<\/code> \u0443 \u043d\u0430\u0441 \u0435\u0449\u0435 \u043d\u0435\u0442 (\u0432 <code>SpringInitializer<\/code> \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0435\u0433\u043e \u043d\u0435\u0442; \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e environment).<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor {  \u00a0@Override  \u00a0public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c environment \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0440\u0430\u043d\u0435\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>getActiveProfiles<\/code> \u043d\u0430\u043c \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u043d\u0430. \u0415\u0441\u043b\u0438 \u043b\u044e\u0434\u0438 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442, \u0438 \u043e\u043d\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0442\u043e \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430 \u043d\u0438\u0445 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0443\u0433\u0430\u0434\u0430\u0442\u044c. \u0410 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0435\u0442, \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e \u043f\u043e\u0433\u043e\u0434\u0435.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u0442\u043e\u0440\u043e\u0435 \u2014 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0437\u0438\u043c\u043d\u044f\u044f \u0438\u043b\u0438 \u043b\u0435\u0442\u043d\u044f\u044f \u0443 \u043d\u0430\u0441 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0433\u043e\u0434\u0430. \u0411\u0443\u0434\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 <code>-300<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor {  \u00a0@Override  \u00a0public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { if (environment.getActivePrifiles().length == 0 &amp;&amp; getTemperature() &lt; -272) {  \u00a0\u00a0\u00a0}  \u00a0} public int getTemperature() {  \u00a0return -300; } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0443 \u043d\u0430\u0441 \u0437\u0438\u043c\u0430, \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u041c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor {  \u00a0@Override  \u00a0public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {  \u00a0\u00a0\u00a0if (environment.getActivePrifiles().length == 0 &amp;&amp; getTemperature() &lt; -272) { environment.setActiveProfiles(&quot;\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430&quot;);  \u00a0\u00a0\u00a0} else { environment.setActiveProfiles(&quot;\u0437\u0438\u043c\u0430\u0411\u043b\u0438\u0437\u043a\u043e&quot;);  \u00a0\u00a0\u00a0}  \u00a0} public int getTemperature() {  \u00a0return -300; } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>EnvironmentPostProcessor<\/code> \u0432 spring.factories.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">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<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0432 \u043a\u0430\u043a\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043e\u043d \u0443 \u043d\u0430\u0441 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f. \u0412\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0443 \u043d\u0430\u0441 <code>\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430<\/code>. \u0418 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u043f\u0430\u043b\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>ApplicationContextInitializer<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0435\u0441\u0442\u044c \u043b\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0438\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u043e\u043c.<br \/>  \u0418\u0442\u043e\u0433:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class ResolveProfileEnvironmentPostProcessor implements EnvironmentPostProcessor {  \u00a0@Override  \u00a0public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {  \u00a0\u00a0\u00a0if (getTemperature() &lt; -272) {  \u00a0\u00a0\u00a0\u00a0\u00a0environment.setActiveProfiles(&quot;\u0437\u0438\u043c\u0430\u0422\u0443\u0442\u0430&quot;);  \u00a0\u00a0\u00a0} else {  \u00a0\u00a0\u00a0\u00a0\u00a0environment.setActiveProfiles(&quot;\u0437\u0438\u043c\u0430\u0411\u043b\u0438\u0437\u043a\u043e&quot;);  \u00a0\u00a0\u00a0}  \u00a0}  \u00a0private int getTemperature() {  \u00a0\u00a0\u00a0return -300;  \u00a0} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043f\u0440\u043e <code>EnvironmentPostProcessor<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e <code>ApplicationContextInitializer<\/code>. \u041d\u043e \u043a\u0442\u043e \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442? <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/NWa7U4zyEO9STyGyk3xXTUnBZcVR8x-fjlP6_qqyCDieETKsoQbwNL8MBt1rMZtgLpw_1ISenHo6QdrzIsTwCoINSrCA7X61Pdi4H0I5dZxcwfjjCmAPyYHPGO5MKvd9oyYXHwra\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0433\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0447\u0443\u0434\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432\u0438\u0434\u0438\u043c\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0431\u0440\u0430\u0447\u043d\u044b\u043c \u0441\u044b\u043d\u043e\u043c <code>ApplicationListener<\/code> \u0438 <code>EnvironmentPostProcessor<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0442 <code>ApplicationListener<\/code>, \u0438 \u043e\u0442 <code>EnvironmentPostProcessor<\/code>. \u041d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d <code>ConfigFileApplicationListener<\/code> (\u043f\u043e\u0447\u0435\u043c\u0443 &quot;ConfigFile&quot; \u2014 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442). <\/p>\n<p>  <\/p>\n<p>\u0415\u043c\u0443 \u043d\u0430\u0448 \u041a\u0430\u0440\u043b\u0441\u043e\u043d, \u0442.\u0435. Spring Application, \u0434\u0430\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 environment, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0442 \u0441\u043b\u0443\u0448\u0430\u043b \u0434\u0432\u0430 event: <code>ApplicationPreparedEvent<\/code> \u0438 <code>ApplicationEnvironmentPreparedEvent<\/code>. \u041c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c, \u043a\u0442\u043e \u043a\u0438\u0434\u0430\u0435\u0442 \u044d\u0442\u0438 event-\u044b. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 (\u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0443\u0436\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043b\u0438\u0448\u043d\u044f\u044f, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f Spring), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0438\u0434\u0430\u0435\u0442 event \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c\u0441\u044f environment (\u043f\u0430\u0440\u0441\u044f\u0442\u0441\u044f Application.yml, properties, environment \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u0442.\u0434.).<br \/>  \u041f\u043e\u043b\u0443\u0447\u0438\u0432 <code>ApplicationEnvironmentPreparedEvent<\/code>, listener \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c environment \u2014 \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 <code>EnvironmentPostProcessor<\/code> \u0438 \u0434\u0430\u0442\u044c \u0438\u043c \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/-YF-6uDuDo7pZ-MXlApLmW15YTyYGI0K2dnl7drykOtSnjQ7c10fdBgTlc01mnu4ohVEITSmdjmlEsw0_L_JBH-ffnq9OiY3gdq0GZ6p1dp8ekb4BIIBlZ7sB12Fan5QJdPiv--B\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442 <code>SpringFactoriesLoader<\/code> \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0435 <code>EnvironmentPostProcessor<\/code>, \u0432 spring.factories. \u041f\u043e\u0442\u043e\u043c \u043e\u043d \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 <code>EnvironmentPostProcessor<\/code> \u0432 \u043e\u0434\u0438\u043d List <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/3G1k9s4-OYfb-3UUuxsdval8FBOR-jmVQ77TTYWadLmDMjnFxcyH4noft-WFJZqAFrY0VsXzENQ9gLtVlzmvtbOo7z4S4Jl6bh772-59Y3atEAqMeeUR_L42ANnn63WruLqvrpqu\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d \u0442\u043e\u0436\u0435 <code>EnvironmentPostProcessor<\/code> (\u043f\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u0441\u0435\u0431\u044f \u0442\u0443\u0434\u0430 \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0435\u0442,<br \/>  <img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/6Gw037U4guXTCOWWUrsHDv2-I6_qLeewqxJmZultkwKxwvQ0PTTov_636pCgtL3NZxObZIF2mVTpgVkfQaoE8XCCz3MSB2Ha19qI80nvIWFByI-mgh7AZDkiE1hdsyb_fxbeAYE6\"\/><br \/>  \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0438\u0445, \u0435\u0434\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c\u0438 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434 <code>postProcessEnvironment<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u0441\u0435 <code>postProcessEnvironment<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0435\u0449\u0435 \u0434\u043e <code>SpringApplicationInitializer<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 <code>EnvironmentPostProcessor<\/code> \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>ConfigFileApplicationListener<\/code> \u0442\u043e\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 environment \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f, \u0432\u0441\u0435 \u043e\u043f\u044f\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u041a\u0430\u0440\u043b\u0441\u043e\u043d\u0443. <\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 environment \u0433\u043e\u0442\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. \u0418 \u041a\u0430\u0440\u043b\u0441\u043e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>ApplicationInitializer<\/code>. \u0422\u0443\u0442 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0435\u0441\u0442\u044c environment, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u043c\u044b \u043f\u0430\u0434\u0430\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u0430\u0447\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0442\u043e\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u044b, \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0443\u0436\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0432\u044b\u0448\u0435 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 Spring \u0442\u043e\u0436\u0435 \u043d\u0435 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e. \u0422\u0430\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0438\u043d\u043e\u043f\u043b\u0430\u043d\u0435\u0442\u044f\u043d\u0435, single responsibility \u043d\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0438 \u043b\u0435\u0437\u0442\u044c \u0442\u0443\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b listener, \u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u2014 <code>EnvironmentPostProcessor<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/NN-3I4QVgJe-MhxGUymPMpR9ea0aqtC0Frdkauv8lEQBVCgMVXws8pOkOwl0kSzIqSnZfOfJ0HeKvOd-nAbcJSdYPSJ6SHxLDR3XYofvBM-xW1KFOl9IEfTpX_vXaY3_0heHpaCo\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a <code>EnvironmentPostProcessor<\/code> \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c application.yml, application properties, \u0432\u0441\u044f\u043a\u0438\u0435 environment variable, command \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0442.\u0434. \u0410 \u043a\u0430\u043a listener, \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0434\u0432\u0430 event-\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>ApplicationPreparedEvent<\/code><\/li>\n<li><code>ApplicationEnvironmentPreparedEvent<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/uHAZtFFrzwCHmRmHhFcjvWlZ2KYzUtpSNJXA1fGl3ZnR4SQX9w2rpIQfqq-w0eWRIN0WoecCvL8kRx5JogxOtAnwDrGz2lYsCOeu_uLqTq8g4U4qMJmR3OFlKiby3Y8zB-dc4DVX\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438 event-\u044b \u0431\u044b\u043b\u0438 \u0432 \u0441\u0442\u0430\u0440\u043e\u043c Spring. \u0410 \u0442\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0432\u044b\u0448\u0435 \u2014 event \u0438\u0437 Spring Boot (\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 event-\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430). \u0418 \u0438\u0445 \u0435\u0449\u0435 \u0446\u0435\u043b\u0430\u044f \u043f\u0430\u0447\u043a\u0430. \u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>ApplicationStartingEvent<\/code><\/li>\n<li><code>ApplicationEnvironmentPreparedEvent<\/code><\/li>\n<li><code>ApplicationPreparedEvent<\/code><\/li>\n<li><code>ContextRefreshedEvent<\/code><\/li>\n<li><code>EmbeddedServletContainerInitializedEvent<\/code><\/li>\n<li><code>ApplicationReadyEvent<\/code><\/li>\n<li><code>ApplicationFailedEvent<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435. \u041d\u043e \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a Spring Boot, \u0430 \u0447\u0430\u0441\u0442\u044c \u2014 \u043a Spring (\u0441\u0442\u0430\u0440\u044b\u0439-\u0434\u043e\u0431\u0440\u044b\u0439 <code>ContextRefreshedEvent<\/code> \u0438 \u0442.\u0434.). <\/p>\n<p>  <\/p>\n<p>\u041d\u044e\u0430\u043d\u0441 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 event-\u043e\u0432 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 (\u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0435 \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0431\u0430\u0431\u0443\u0448\u043a\u0438 \u2014 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 event-\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0438\u0434\u0430\u0435\u0442 Spring Boot). \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u0440\u043e \u0442\u0430\u0439\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b spring.factories \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 Application Listener \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 spring.factories, \u0442\u043e \u044d\u0442\u0438 event-\u044b \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043a \u0432\u0430\u043c.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/eXOzHP0LG7Eb3U3actqQSoNj7qX2F05BxFxz8ltaflQ5iZaIKn-9rHH3PGJlNNwkzRBfPpJsT2VFioWoVYSWppfgb4gdjdOpeqcb8_PuxdxdcohEFfWb3J77xjeuj05jjztfiHrX\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u0440\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435. \u041f\u0440\u0438\u043a\u043e\u043b, \u043f\u0440\u0430\u0432\u0434\u0430, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u2014 \u0442\u0430\u043a\u0438\u0435, \u043a\u0430\u043a <code>EnvironmentPostProcessor<\/code> \u0438 <code>ApplicationContextInitializer<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 listener-\u0430\u0445, \u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043d\u0435\u043a\u0440\u0430\u0441\u0438\u0432\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0432\u0441\u0435 event-\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0438\u0434\u0430\u0435\u0442 Spring, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <code>ContextRefreshedEvent<\/code> \u0438 <code>ContextStartedEvent<\/code>, \u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c listener, \u043a\u0430\u043a \u0431\u0438\u043d, \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c (\u0438\u043d\u0430\u0447\u0435 \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u043e). \u0415\u0433\u043e \u043d\u0430\u0434\u043e \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 spring.factories, \u0442\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0443\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u044c\u0448\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a, \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 <code>ContextStartedEvent<\/code> \u0438 <code>ContextStoppedEvent<\/code>?<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/fGJFgvdvZLQIB7p7DU1UZv3q1Ye_2DL5PMltXmJI_eo9DnqYxErNnyiyZTq2vX6XG58AySmZed1ddbMtvYTCt0oVzbArWmEdiZZnro2OUYFVUYo7WwTVgh6wNZjRNtGnIPs-3yjV\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0438 event-\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041c\u044b \u0434\u043e\u043b\u0433\u043e \u043b\u043e\u043c\u0430\u043b\u0438 \u0433\u043e\u043b\u043e\u0432\u0443 \u043d\u0430\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0436\u0435 event-\u044b \u043d\u0430\u0434\u043e \u043b\u043e\u0432\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u043e. \u0418 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e event-\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u0440\u0433\u0430\u0435\u0442\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>ctx.start();<\/code> -&gt; <code>ContextStartedEvent<\/code><\/li>\n<li><code>ctx.stop();<\/code> -&gt; <code>ContextStoppedEvent<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422.\u0435. event-\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c <code>SpringApplication.run<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0434\u0435\u0440\u043d\u0435\u043c \u0443 \u043d\u0435\u0433\u043e <code>ctx.start();<\/code> \u0438\u043b\u0438 <code>ctx.stop();<\/code>. \u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e. \u041d\u043e \u0432\u0430\u043c, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0434\u0430\u043b\u0438 \u0442\u043e\u0447\u043a\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u0435\u0442 \u043b\u0438 Spring \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435? \u0415\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c exception:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>ctx.stop();<\/code> \u00a0(1)<\/li>\n<li><code>ctx.start();<\/code> (2)<\/li>\n<li><code>ctx.close();<\/code> (3)<\/li>\n<li><code>ctx.start();<\/code> (4)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 <code>ctx.close();<\/code> \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e. \u041d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>ctx.stop();<\/code> \u043f\u0435\u0440\u0435\u0434 <code>ctx.start();<\/code> \u2014 \u043c\u043e\u0436\u043d\u043e (\u043f\u0440\u043e\u0441\u0442\u043e Spring \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0438 event-\u044b \u00a0&#8212; \u043e\u043d\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0430\u0441).<\/p>\n<p>  <\/p>\n<p>\u041f\u0438\u0448\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 listener-\u044b, \u0441\u043b\u0443\u0448\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u0438, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u0432\u0430\u0448\u0438 \u0437\u0430\u043a\u043e\u043d\u044b, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 <code>ctx.stop();<\/code>, \u0430 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 <code>ctx.start();<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433\u043e \u0441\u0445\u0435\u043c\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/l2_TIgs4KPaRN_u_ES6YxOgDexci9F6UUDaH8J6jV7lUuafd8DDd2HS79j1tbPgPVNVWeySkPp1lk61lhkcHGNUOP36QY7k9Z6UAEzhT3SyRGqx7Y6Umf5GJ8JVSa-rxYgQqKEGT\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0426\u0432\u0435\u0442\u0430\u043c\u0438 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u0438\u043d\u0438\u0439 \u2014 \u044d\u0442\u043e Spring Boot, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u043e. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f Tomcat service \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043a \u043d\u0435\u043c\u0443 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u0442, \u0432\u0441\u0435 \u0431\u0438\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438 \u0442.\u0434.<\/li>\n<li>\u0417\u0435\u043b\u0435\u043d\u044b\u0439 \u2014 \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b event <code>ContextRefreshedEvent<\/code> \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d. \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, application listener-\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u043b\u0438\u0431\u043e \u043f\u0443\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 ApplicationListener, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 event-\u044b. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 event-\u043e\u0432, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0436\u0435 ApplicationListener \u0432 spring.factories (\u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Spring). \u041f\u043e\u043b\u043e\u0441\u043e\u0439 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e, \u0433\u0434\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u043b\u0430\u0434 <a href=\"https:\/\/www.youtube.com\/watch?v=hDpa6m48eC4\">Spring Ripper<\/a>.<\/li>\n<li>\u041d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 SpringApplication, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. \u042d\u0442\u043e \u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0431\u044b\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 Spring-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 WebXML.<\/li>\n<li>\u041d\u043e \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u044d\u0442\u0430\u043f\u044b. \u0417\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0442\u043e, \u0433\u0434\u0435 \u0438 \u0437\u0430 \u043a\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/li>\n<li>\u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u0441\u0435\u0440\u044b\u0439 \u044d\u0442\u0430\u043f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043a\u043b\u0438\u043d\u0438\u0442\u044c\u0441\u044f. \u042d\u0442\u043e \u044d\u0442\u0430\u043f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c &quot;\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438&quot; \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 SpringApplication (\u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u0434 \u043b\u0435\u0437\u0442\u044c).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043c\u044b \u0448\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e: \u043d\u0430\u0447\u0430\u043b\u0438 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0446\u0430, \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u043b\u0430 \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0430, \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438 \u0442.\u043f. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u0440\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443.<br \/>  \u0412\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u0432\u0430\u0448\u0435\u043c main <code>SpringApplication.run<\/code>. \u041e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 listener-\u043e\u0432, \u043a\u0438\u0434\u0430\u0435\u0442 \u0438\u043c event, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u0441\u0442\u0440\u043e\u0438\u0442\u044c\u0441\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e listener-\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442 <code>EnvironmentPostProcessor<\/code>, \u0434\u0430\u044e\u0442 \u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c environment. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e environment \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d, \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u041a\u0430\u0440\u043b\u0441\u043e\u043d). \u041a\u0430\u0440\u043b\u0441\u043e\u043d \u0441\u0442\u0440\u043e\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043c Application Initializer-\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c Spring-\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u2014 <code>BeanFactoryPostProcessor<\/code>, <code>BeanPostProcessor<\/code>, \u0431\u0438\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u042d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439\u00a0Spring.<\/p>\n<p>  <\/p>\n<h2>\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c<\/h2>\n<p>  <\/p>\n<p>\u041c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. <\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0430 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435 \u043b\u044e\u0431\u044f\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u041e\u043d\u0438 \u043d\u0435 \u043b\u044e\u0431\u044f\u0442 \u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0436\u0435 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u0411\u0443\u0434\u0435\u0442 \u043b\u0438 \u0430\u0434\u043c\u0438\u043d \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432 Tomcat, JBoss \u0438\u043b\u0438 \u0432 WebLogic? \u041e\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u044f\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430? <\/p>\n<p>  <\/p>\n<ul>\n<li>tomcat war;<\/li>\n<li>idea;<\/li>\n<li><code>java -jar\/war<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>Tomcat \u2014 \u043d\u0435 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u0442\u0440\u0435\u043d\u0434, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c.<\/p>\n<p>  <\/p>\n<p>Idea \u2014 \u0442\u043e\u0436\u0435, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0422\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0443\u0442\u044c \u0445\u0438\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0438\u0436\u0435. \u041d\u043e \u0432 Idea \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041e\u043d\u0430 \u0436\u0435 \u0432\u0438\u0434\u0438\u0442, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u0440\u0442\u0435\u0440 \u043f\u0440\u0438\u043d\u0435\u0441\u0435\u0442.<br \/>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c <code>java -jar<\/code>, \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c classpath \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043b\u044e\u0434\u0438 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432 2001 \u0433\u043e\u0434\u0443? \u041e\u043d\u0438 \u043f\u0438\u0441\u0430\u043b\u0438 <code>java -jar<\/code>, \u043a\u0430\u043a\u043e\u0439 jar \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0431\u0435\u043b, <code>classpath=...<\/code> \u0438 \u0442\u0430\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043c 150 \u041c\u0431 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u044b. \u0418 \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0438\u043a\u0442\u043e \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u043c: <code>java -jar<\/code>, \u043a\u0430\u043a\u043e\u0439 jar \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u0432\u0441\u0435. \u041a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c classpath \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f. \u041f\u0440\u043e \u044d\u0442\u043e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u044d\u0442\u0430\u043f\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 jar-\u0444\u0430\u0439\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0435\u0437 Tomcat. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>java -jar<\/code>, \u043d\u0430\u0434\u043e jar \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u042d\u0442\u043e\u0442 jar \u044f\u0432\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 war-\u0430, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0441\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f embedded Tomcat. <\/p>\n<p>  <\/p>\n<pre><code class=\"java\">&lt;build&gt;  \u00a0&lt;plugins&gt;  \u00a0\u00a0\u00a0\u00a0&lt;plugin&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;  \u00a0\u00a0\u00a0\u00a0&lt;\/plugin&gt;  \u00a0&lt;\/plugins&gt; &lt;\/build&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u0443 \u043d\u0430\u0441 \u0432 POM-\u0435 \u0443\u0436\u0435 \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u043f\u043b\u0430\u0433\u0438\u043d. \u0422\u0443\u0442 \u0435\u0449\u0435, \u043a\u0441\u0442\u0430\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043a\u0440\u043e\u043c\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e jar, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0440\u043e\u0438\u0442 Maven \u0438\u043b\u0438 Gradle \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0435\u0449\u0435 jar \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/JAWNGKMZf8C_t7pd4V41Lwy9c2S4ArCzg1XUxdS4MrYF6-CwDMZTSfU9W0xCxfehWZPKjrPmx4F-04KOpkYb8S4ROFqh5llidYgei7R3P4fm1BMiF1jM1D9RhX5yBbXU2qrdjda5\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0431\u043e\u043a\u0443:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/1qV4MWu87hqEMd8PKxKAawQz5VZvxCgz4xUWR3XdNasC9JT19OUXXfv0K4LElNtYJGENx5T0UBIdmRqNaPdu8_OvKEbSBAHyEkzAlteurB6X-MK04qiBTER4OAJcSjXWdTEnOIL6\"\/>  <\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0430\u043d\u0430\u043b\u043e\u0433 war-\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u044f\u0432\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438, \u043a\u0430\u043a \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c jar. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0438\u0448\u0435\u043c <code>java -jar<\/code>, \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>org.springframework.boot<\/code>. \u041d\u043e \u044d\u0442\u043e \u0436\u0435 \u043d\u0435 \u043d\u0430\u0448\u0438 \u043a\u043b\u0430\u0441\u0441\u044b. \u041c\u044b \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u0438\u0441\u0430\u043b\u0438 org.springframework.boot package. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u043d\u0430\u0441 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>META-INF<\/code><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/NCe8K-wbMNpwTNv66ibLWP1gV3kmELyOdDRmJnrGxXSEV6_stVuGy-Z_E-R5Zt3KtxZFVQJyqznGfpEZ1cwihS9u4W4fUmYqcpnLuPIgvdf9LqV68Lx_XrOXfIHha1wul6D2AVDo\"\/>  <\/p>\n<p>  <\/p>\n<p>Spring Boot \u0442\u043e\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 MANIFEST (\u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d Maven \u0438\u043b\u0438 Gradle), \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 main class, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 jar-\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u0441\u0435 jar-\u044b \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0430 \u0432\u0438\u0434\u0430: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e main-\u0430. \u0418 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>java -jar<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 -jar, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f main-class-\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u043c \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 MANIFEST, \u0432 main-class \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043d\u0430\u0441 main (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u0437 Idea). \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0447\u0443\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435, \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c. \u041a\u0442\u043e \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442 class path? \u0415\u0441\u043b\u0438 \u043c\u044b \u0432\u043e\u0437\u044c\u043c\u0435\u043c <code>java -jar<\/code> \u0438 \u0441\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e main, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u2014 \u044d\u0442\u043e \u043d\u0430\u0448 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 main, \u043e\u043d \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d \u0432 MANIFEST \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 JarLauncher.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/4nbXPDw3PPWTt_ld5PhQbVo-KEr_MG_A4LcUMpDcqeOtCfw8wf14Vl9M5cEt-tjTkcbcfqTva83b12lZkhRD2n8MiJyrT-kkmAyxIkKgo2ssmgn1ZKE15N2jZJClvmqVY-Wdk8Zx\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0422.\u0435. \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043e\u043d \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0435\u0449\u0435 \u0442\u0430\u043a\u0443\u044e \u0448\u0442\u0443\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c JarLauncher. \u0415\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0448 main, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c class path.<br \/>  \u0410 \u043a\u0430\u043a \u043e\u043d \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0430\u0441 main? \u0422\u0443\u0442 \u0435\u0441\u0442\u044c property \u2014 <code>Start-class<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0422.\u0435. \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u0432\u0430 \u0448\u0430\u0433\u0430. \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0448\u0430\u0433\u0435 \u0435\u0441\u0442\u044c class path \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e jar. \u0412\u0441\u0435, \u0447\u0442\u043e \u0442\u0430\u043c \u043b\u0435\u0436\u0438\u0442 \u2014 <code>org.springframework.boot<\/code> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0432 class path. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u043f\u0438\u0448\u0435\u043c \u00a0<code>org.springframework.boot.loader.JarLauncher<\/code> \u0432 main-class. \u0418 \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, main-class \u0438\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435. \u041e\u043d \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 class path, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <code>BOOT-INF<\/code> (\u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043e\u0447\u043a\u0430 lib \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043f\u0430\u043f\u043e\u0447\u043a\u0430 class \u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438).<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 RavenApplication, properties \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 class \u0432 <code>BOOT-INF<\/code>, \u0430 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0438\u043f\u0430 Tomcat \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043f\u0430\u0434\u0430\u044e\u0442 \u0432 <code>BOOT-INF\/lib\/<\/code>. \u041a\u043e\u0433\u0434\u0430 JarLauncher \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b classpath, \u043e\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0448\u0430\u0433 \u2014 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 <code>start-class<\/code>. \u0422\u0430\u043c \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 Spring, <code>ContextSpringApplication<\/code> \u2014 \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0442 flow, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043a\u0443\u0434\u0430 \u043f\u043b\u0430\u0433\u0438\u043d \u0437\u043d\u0430\u0435\u0442, \u043a\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f start-class-\u043e\u043c? \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044f\u0432\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u043d\u044b\u043c. \u0418 \u0442\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u0442 \u0435\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439.<\/p>\n<p>  <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0442\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u0434\u043e\u043a\u0441 \u0438\u043c\u0435\u043d. \u041c\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 property, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>mainClass<\/code>, \u0430 \u0432 MANIFEST \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <code>Start-Class<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443\u0447\u0442\u043e <code>mainClass<\/code> \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 JarLauncher. <\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u044f\u0432\u043d\u043e, \u043a\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f mainClass, \u043a\u0430\u043a \u043e\u043d \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0442\u0441\u044f? \u0423 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430. Spring boot plugin \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u2013 \u0438\u0449\u0435\u0442 mainClass:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u2013 \u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043e\u043d. \u041f\u043b\u0430\u0433\u0438\u043d \u0435\u0433\u043e \u0441\u0430\u043c \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u2014 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c main class;<\/li>\n<li>\u0435\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u2013 \u0441\u043c\u043e\u0442\u0440\u0438\u0442, \u043d\u0430\u0434 \u043a\u0430\u043a\u0438\u043c mainClass \u0441\u0442\u043e\u0438\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f <code>@SpringBootApplication<\/code> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0435\u0433\u043e, \u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0433\u043e;<\/li>\n<li>\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0431\u0443\u0434\u0435\u0442 exception \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c main class, \u0438\u043d\u0430\u0447\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0441 \u043a\u0435\u043c \u0431\u0430\u043d\u0434\u043b\u0438\u0442\u044c \u0432\u0430\u0448 jar-\u043d\u0438\u043a \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u0422.\u0435. \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043e\u0431\u0435\u0440\u0435\u0442\u0441\u044f. \u0421\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e \u0442\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430 main class.<\/li>\n<li>\u0435\u0441\u043b\u0438 @SpringBootApplication \u043d\u0435\u0442 \u2014 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>JarLauncher \u0435\u0441\u0442\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Tomcat \u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u0435\u0441\u0442\u044c WarLauncher, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c war-\u043d\u0438\u043a \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a jar-\u043d\u0438\u043a.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043b\u044e\u0434\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 <code>java -jar<\/code>. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c? \u041c\u043e\u0436\u043d\u043e. \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a. <\/p>\n<p>  <\/p>\n<pre><code class=\"java\">&lt;build&gt;  \u00a0&lt;plugins&gt;  \u00a0\u00a0\u00a0\u00a0&lt;plugin&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;configuration&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;executable&gt;true&lt;\/executable&gt;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/configuration&gt;  \u00a0\u00a0\u00a0\u00a0&lt;\/plugin&gt;  \u00a0&lt;\/plugins&gt; &lt;\/build&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <code>&lt;configuration&gt;<\/code> \u0430 \u0432 \u043d\u0435\u0439 <code>&lt;executable&gt;true&lt;\/executable&gt;<\/code> \u043d\u0443 \u0438\u043b\u0438 \u0432 Gradle \u0442\u0430\u043a \u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">springBoot {  executable = true }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e \u0438 jar \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 executable jar. \u041d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u044d\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0412\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 Windows \u043f\u043e\u043c\u043d\u044f\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u043e exe-\u0448\u043d\u0438\u043a\u0443, \u0438 \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u0422\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c Spring Boot, \u0442.\u0435. \u0441 \u0432\u0430\u0448\u0438\u043c jar, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0442\u0430\u043a. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043a\u043b\u0438\u043a\u0430\u044e \u043f\u043e \u043d\u0435\u043c\u0443, \u0438 \u043e\u043d \u043f\u043e\u0448\u0435\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f.<br \/>  \u041a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e?<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u0430\u0448 \u0444\u0430\u0439\u043b\u0438\u043a (jar \u2014 \u044d\u0442\u043e zip-\u0430\u0440\u0445\u0438\u0432, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435):<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/ffRXL6c7ilzhYzkAAKbFvffBrP9Gu1_I2f0IBZSvFT565oIdW7XbvCTCpcNrylDzFL921HCNGVTY8hwRgjTZZOz-eF__Ax96df57zSSNFUqtzunSjbDIx0OuTPr0UrlZ3S7WX25g\"\/>  <\/p>\n<p>  <\/p>\n<p>Spring Boot \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043c\u0430\u0433\u0438\u044e. <\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0431\u0430\u0448-\u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 jar-\u043d\u0438\u043a. \u041f\u0440\u0438\u043a\u043e\u043b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u2014 <code>#!\/bin\/bash<\/code>. \u0418 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043c\u0430\u0433\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043c\u0430\u0433\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u0422\u0430\u043c \u0435\u0441\u0442\u044c <code>exit 0<\/code> \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0431\u0435\u043b\u0438\u0431\u0435\u0440\u0434\u0430 \u2014 \u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043f\u043e\u0448\u0435\u043b \u043d\u0430\u0448 zip-\u0430\u0440\u0445\u0438\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/yUQz8S5YVyiKhFP9OX541sZ_Tb-FOZ1whGi3DWcf4I9-EnPjlawsPCwqEItJa4k4Mb1ZvVdCD158lwr27ZV_2_aMIhHheiCE-6T6NqRLHv7yfa5niF3uWMTuursrAWXc7aiyoyIA\"\/>  <\/p>\n<p>  <\/p>\n<p>\u041c\u0430\u0433\u0438\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 zip-\u0430\u0440\u0445\u0438\u0432 \u0438\u043c\u0435\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0435\u0442\u043a\u0443 \u2014 <code>0xf4ra<\/code>. \u0415\u0441\u043b\u0438 \u0430\u0440\u0445\u0438\u0432\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442 \u044d\u0442\u0443 \u043c\u0435\u0442\u043a\u0443, \u043e\u043d \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0448\u0435\u043b \u0441\u0442\u0430\u0440\u0442 \u0430\u0440\u0445\u0438\u0432\u0430. <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/ArxsImr5TKAi0cTftlay9jCZZpxv3ZpV4Tcsb-PGRYradE9m18HxeWVRw3rpeB7yXDMcR__McScnYoeL0kQLk_IFkU1xvrOkvF3N9dz_xHfXPC8nDOKBZlJF5AQusACPNAwDFu5y\"\/>  <\/p>\n<p>  <\/p>\n<p>\u0414\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0442\u0435\u043a\u0441\u0442 \u0438 \u0442.\u043f.).<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a jar \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u2014 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u0430\u0439\u043b;<\/li>\n<li>\u043e\u043d\u0430 \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u0442\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e &quot;\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439 \u043c\u0435\u043d\u044f \u0447\u0435\u0440\u0435\u0437 bash&quot; (<code>#!\/bin\/bash<\/code>);<\/li>\n<li>bash \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b;<\/li>\n<li>\u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 <code>exit 0<\/code>;<\/li>\n<li>\u0441\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 <code>java -jar<\/code> \u043d\u0430 \u0441\u0435\u0431\u044f \u2014 \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 jar-\u043d\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f;<\/li>\n<li>\u043f\u043e\u0441\u043b\u0435 <code>java -jar<\/code> \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 zip-\u0430\u0440\u0445\u0438\u0432\u0430\u0442\u043e\u0440 \u0438\u0434\u0435\u0442 \u043f\u043e jar-\u0443, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u0438\u0434\u0438\u0442 \u043c\u0435\u0442\u043a\u0443 \u043d\u0430\u0447\u0430\u043b\u0430 \u0430\u0440\u0445\u0438\u0432\u0430, \u0438 \u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0438\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  <\/p>\n<p>\u0412\u044b\u0432\u043e\u0434\u044b \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043c\u043d\u0435\u043d\u0438\u0435\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e Spring Boot \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u0430\u0433\u0438\u044f, \u0447\u0442\u043e \u0442\u0430\u043c \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e, \u0441 \u0447\u0435\u043c \u043f\u043e\u0442\u043e\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u043e Spring, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Spring \u2014 \u044d\u0442\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 Spring Boot. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u0437\u044f\u043b \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0442\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a, \u0441\u043d\u044f\u0432 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c \u0441 \u043d\u0430\u0441. \u041a\u0441\u0442\u0430\u0442\u0438, \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring, Spring Boot \u0442\u043e\u0436\u0435 \u0437\u0430\u0431\u0440\u0430\u043b.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@SpringBootApplication<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0442\u0435 best practice, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 Spring-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0442\u0440\u0435\u0442\u044c\u0435 \u2014 \u044d\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0442\u0438\u043f\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c property \u043a\u0430\u043a environment variable, \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a var arg \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0435 \u043a\u0430\u043a \u043d\u0435\u043a\u0438\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u0430 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c JSON. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <code>@value<\/code> \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u043c\u044b \u044d\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438. \u041d\u0430\u0448\u0438 configuration properties \u043a\u043e\u043c\u043f\u043b\u0438\u0442\u0438\u043b\u0438\u0441\u044c, \u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u0442\u0430\u0440\u0442\u0435\u0440 \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441, \u043b\u044e\u0434\u0438 \u0435\u0433\u043e \u0431\u0440\u0430\u043b\u0438 \u0438 \u043a\u043e\u043c\u043f\u043b\u0438\u0442\u0438\u043b\u0438, \u0438 \u0443 \u043d\u0438\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0441\u0430\u043c Spring \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u0438\u0445 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u043e\u0432. \u041c\u044b \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u043d\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u044b\u0432\u043e\u0434. \u041d\u0435 \u043d\u0430\u0434\u043e \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u043a\u0438\u0448\u043a\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0432\u0435\u0449\u0438. \u0418 \u0442\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0430\u043c\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0435 Spring, \u0430 Spring Boot \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u044b. \u0410 \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0443\u043b\u0438\u0442\u044c \u0438 \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/OJJmFN6SZFbbrdjwpIxqV0tJ9uMrYW6B5DK2aW4eib2ePIZcZOritvx9uKiQ23CtUFOKPNG12r0eZ07tEuFbQmdFUZN4PEERW_DfGyydLdVmQn_N9c74HQJvcPlTAA0NDTFXWRaF\"\/>  <\/p>\n<p>  <\/p>\n<blockquote><p>\u041c\u0438\u043d\u0443\u0442\u043a\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b. 19-20 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f Joker 2018, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u0411\u043e\u0440\u0438\u0441\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0411\u0430\u0440\u0443\u0445\u043e\u043c \u0421\u0430\u0434\u043e\u0433\u0443\u0440\u0441\u043a\u0438\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u044f\u0442 \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c <a href=\"https:\/\/jokerconf.com\/2018\/talks\/50i8gfio9ic6u8qqskyq02\/\">\u00ab\u041f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0421\u0435\u043d\u044c\u043e\u0440\u0430 \u0425\u043e\u043b\u043c\u0441\u0430 \u0438 \u0414\u0436\u0443\u043d\u0438\u043e\u0440\u0430 \u0412\u0430\u0442\u0441\u043e\u043d\u0430 \u0432 \u043c\u0438\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u041e [Joker Edition]\u00bb<\/a>, \u0430 \u041a\u0438\u0440\u0438\u043b\u043b \u0422\u043e\u043b\u043a\u0430\u0447\u0435\u0432 \u0441 \u041c\u0430\u043a\u0441\u0438\u043c\u043e\u043c \u0413\u043e\u0440\u0435\u043b\u0438\u043a\u043e\u0432\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044f\u0442 \u0434\u043e\u043a\u043b\u0430\u0434 <a href=\"https:\/\/jokerconf.com\/2018\/talks\/1vzkputteosikmmakiqgci\/\">\u00abMicronaut vs Spring Boot, \u0438\u043b\u0438 \u041a\u0442\u043e \u0442\u0443\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439?\u00bb<\/a>. \u0412 \u0446\u0435\u043b\u043e\u043c, \u043d\u0430 Joker \u0431\u0443\u0434\u0435\u0442 \u0435\u0449\u0451 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 <a href=\"https:\/\/habr.com\/company\/jugru\/blog\/424237\/\">\u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f<\/a> \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432. \u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href=\"https:\/\/jokerconf.com\/registration\/\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a> \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438.<\/p><\/blockquote>\n<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/post\/425333\/\"> https:\/\/habr.com\/post\/425333\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p>\u0415\u0432\u0433\u0435\u043d\u0438\u0439 <a href=\"https:\/\/habr.com\/users\/evgenyborisov\/\" class=\"user_link\">EvgenyBorisov<\/a> \u0411\u043e\u0440\u0438\u0441\u043e\u0432 (NAYA Technologies) \u0438 \u041a\u0438\u0440\u0438\u043b\u043b <a href=\"https:\/\/habr.com\/users\/tolkkv\/\" class=\"user_link\">tolkkv<\/a> \u0422\u043e\u043b\u043a\u0430\u0447\u0435\u0432 (\u0426\u0438\u0430\u043d.\u0424\u0438\u043d\u0430\u043d\u0441, <a href=\"https:\/\/twitter.com\/tolkv\">\u0422\u0432\u0438\u0442\u0442\u0435\u0440<\/a>) \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 Spring Boot \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447 \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0416\u0435\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0431\u0430\u043d\u043a\u0430 \u0411\u0440\u0430\u0430\u0432\u043e\u0441\u0430. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445 \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/iH2PrlDVZVfLhtUKaUtfgt-FbjXu4IMf-_ZhqD85e8toWdVxJxzY2nDsTC8vMkn7PSMjpTBtLiVR_ef2exiqszPmQ_2lTOJPx0CTPKJ2RrLB8JFoT8R32kHS_grt6srdxvKTFpUh\"\/><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-290372","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=290372"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290372\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=290372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=290372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=290372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}