{"id":811,"date":"2018-01-20T20:58:09","date_gmt":"2018-01-20T17:58:09","guid":{"rendered":"http:\/\/leodev.ru\/blog\/?p=811"},"modified":"2018-02-11T22:07:05","modified_gmt":"2018-02-11T19:07:05","slug":"spring-boot-commandlinerunner","status":"publish","type":"post","link":"https:\/\/leodev.ru\/blog\/spring-boot\/spring-boot-commandlinerunner\/","title":{"rendered":"Spring Boot \u041d\u0435 \u0412\u0435\u0431 \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (CommandLineRunner)"},"content":{"rendered":"<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Spring Boot \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <strong>CommandLineRunner<\/strong> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 <strong>run(String &#8230;)<\/strong><\/p>\n<pre class=\"lang:java decode:true \" title=\"SpringBootApplication.java\">package ru.leodev.examples.springboot.springbootnonwebexample;\r\n\r\nimport org.springframework.boot.CommandLineRunner;\r\nimport org.springframework.boot.SpringApplication;\r\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\r\n\r\n@SpringBootApplication\r\npublic class SpringBootNonWebExampleApplication implements CommandLineRunner {\r\n\r\n    public static void main(String[] args) {\r\n        SpringApplication.run(SpringBootNonWebExampleApplication.class, args);\r\n    }\r\n\r\n    \/\/ \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\r\n    @Override\r\n    public void run(String... args) throws Exception {\r\n        \/\/ \u043d\u0430\u0448\u0430 \u043b\u043e\u0433\u0438\u043a\u0430\r\n    }\r\n}<\/pre>\n<p><!--more--><\/p>\n<h2>1. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432<\/h2>\n<p><a href=\"http:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/01\/c74ac-clip-21kb1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-817\" src=\"http:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/01\/c74ac-clip-21kb1-300x217.png\" alt=\"\" width=\"300\" height=\"217\" srcset=\"https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/01\/c74ac-clip-21kb1-300x217.png 300w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/01\/c74ac-clip-21kb1.png 478w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a><\/p>\n<h2>2. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/h2>\n<pre class=\"lang:java decode:true\" title=\"pom.xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n\t&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n\r\n\t&lt;groupId&gt;ru.leodev.examples.springboot&lt;\/groupId&gt;\r\n\t&lt;artifactId&gt;spring-boot-non-web-example&lt;\/artifactId&gt;\r\n\t&lt;version&gt;0.0.1&lt;\/version&gt;\r\n\t&lt;packaging&gt;jar&lt;\/packaging&gt;\r\n\r\n\t&lt;name&gt;spring-boot-non-web-example&lt;\/name&gt;\r\n\t&lt;description&gt;Spring Boot use CommandLineRunner&lt;\/description&gt;\r\n\r\n\t&lt;parent&gt;\r\n\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t&lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\r\n\t\t&lt;version&gt;1.5.9.RELEASE&lt;\/version&gt;\r\n\t\t&lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\r\n\t&lt;\/parent&gt;\r\n\r\n\t&lt;properties&gt;\r\n\t\t&lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\r\n\t\t&lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\r\n\t\t&lt;java.version&gt;1.8&lt;\/java.version&gt;\r\n\t&lt;\/properties&gt;\r\n\r\n\t&lt;dependencies&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;spring-boot-starter&lt;\/artifactId&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\r\n\t&lt;\/dependencies&gt;\r\n\r\n\t&lt;build&gt;\r\n\t\t&lt;plugins&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t\t&lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t&lt;\/plugins&gt;\r\n\t&lt;\/build&gt;\r\n\r\n\r\n&lt;\/project&gt;\r\n<\/pre>\n<h2>3. Spring<\/h2>\n<p>3.1 \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435<\/p>\n<pre class=\"lang:java decode:true\" title=\"HelloService.java\">package ru.leodev.examples.springboot.springbootnonwebexample;\r\n\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\n@Service\r\npublic class HelloService {\r\n    @Value(\"${name:unknown}\")\r\n    private String name;\r\n\r\n    public String getMessage() {\r\n        return getMessage(name);\r\n    }\r\n\r\n    public String getMessage(String name) {\r\n        return \"Hello \" + name;\r\n    }\r\n}<\/pre>\n<pre class=\"lang:java decode:true \" title=\"application.properties\">name=Leodev<\/pre>\n<p>3.2 \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<strong>CommandLineRunner <\/strong>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430 \u043c\u0435\u0442\u043e\u0434 run.<\/p>\n<pre class=\"lang:java decode:true \" title=\"SpringBootNonWebExampleApplication.java\">package ru.leodev.examples.springboot.springbootnonwebexample;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.boot.Banner;\r\nimport org.springframework.boot.CommandLineRunner;\r\nimport org.springframework.boot.SpringApplication;\r\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\r\n\r\nimport static java.lang.System.exit;\r\n\r\n@SpringBootApplication\r\npublic class SpringBootNonWebExampleApplication implements CommandLineRunner {\r\n\r\n    @Autowired\r\n    private HelloService helloService;\r\n\r\n    public static void main(String[] args) {\r\n\r\n        \/\/\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0431\u0430\u043d\u043d\u0435\u0440 spring boot, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0433\u043e \u043b\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438\r\n        SpringApplication app = new SpringApplication(SpringBootNonWebExampleApplication.class);\r\n        app.setBannerMode(Banner.Mode.OFF);\r\n        app.run(args);\r\n    }\r\n\r\n    \/\/ \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0443 \u043b\u043e\u0433\u0438\u043a\u0443\r\n    @Override\r\n    public void run(String... args) {\r\n        if (args.length &gt; 0) {\r\n            System.out.println(helloService.getMessage(args[0]));\r\n        } else {\r\n            System.out.println(helloService.getMessage());\r\n        }\r\n        exit(0); \/\/ \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443\r\n    }\r\n}<\/pre>\n<h2>6. \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<\/p>\n<pre class=\"lang:java decode:true\">$ mvn package\r\n\r\n$ java -jar target\/spring-boot-simple-1.0.jar\r\nHello Leodev\r\n\r\n$ java -jar target\/spring-boot-simple-1.0.jar \"Drunk Jedi\"\r\nHello Drunk Jedi<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Spring Boot \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 CommandLineRunner \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 run(String &#8230;) package ru.leodev.examples.springboot.springbootnonwebexample; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootNonWebExampleApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(SpringBootNonWebExampleApplication.class, args); } \/\/ \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 @Override public void run(String&#8230; args) throws Exception &hellip; <a href=\"https:\/\/leodev.ru\/blog\/spring-boot\/spring-boot-commandlinerunner\/\" class=\"more-link\">\u0427\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435<span class=\"screen-reader-text\"> \u00abSpring Boot \u041d\u0435 \u0412\u0435\u0431 \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (CommandLineRunner)\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":813,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[207],"tags":[225,217],"class_list":["post-811","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring-boot","tag-console","tag-spring-boot"],"_links":{"self":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts\/811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/comments?post=811"}],"version-history":[{"count":7,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts\/811\/revisions"}],"predecessor-version":[{"id":854,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts\/811\/revisions\/854"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/media\/813"}],"wp:attachment":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/media?parent=811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/categories?post=811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/tags?post=811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}