springboot實戰(1)springboot基本配置
阿新 • • 發佈:2018-11-20
1 入口類和@SpringBootApplication
package com.wuk.springbootHello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication//開啟自動配置 public class SpringbootHelloApplication { public static void main(String[] args) { SpringApplication.run(SpringbootHelloApplication.class, args); } @RequestMapping("/") public String index(){ return "hello spring boot"; } }
http://127.0.0.1:8080/
執行結果:
hello spring boot
2 定製banner
1 定製自己的banner
圖片定製地址:http://patorjk.com/software/taag
2 關閉banner
3 外部配置
springboot允許使用properties檔案,yaml檔案或者命令列引數作為外部配置。
1 命令列引數配置
2 常規性配置
application.properties
server.port=9090
book.author=wuk
book.name=spring boot
@RestController @SpringBootApplication//開啟自動配置 public class SpringbootHelloApplication { @Value("${book.author}") private String bookAuthor; @Value("${book.name}") private String bookName; public static void main(String[] args) { SpringApplication.run(SpringbootHelloApplication.class, args); } @RequestMapping("/") public String index(){ return "bookAuthor="+bookAuthor+",bookName="+bookName; } }
bookAuthor=wuk,bookName=spring boot
3 型別安全的配置(基於properties)
要注意 1.4版本的已經摒棄了@ConfigurationProperties的locations屬性,那麼解決辦法是:
@Component//把普通pojo例項化到spring容器中
@ConfigurationProperties(prefix="author")//prefix="author"指定配置字首
@PropertySource("classpath:/config/my.properties")
案例如下:
my.properties
author.name=wuk
author.age=12
具體的實體類
package com.wuk.springbootHello;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component//把普通pojo例項化到spring容器中
@ConfigurationProperties(prefix="author")//prefix="author"指定配置字首
@PropertySource("classpath:/config/my.properties")
public class Author {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
啟動類
package com.wuk.springbootHello;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication//開啟自動配置
public class SpringbootHelloApplication {
@Autowired
private Author author;
public static void main(String[] args) {
SpringApplication.run(SpringbootHelloApplication.class, args);
}
@RequestMapping("/")
public String index(){
return "authorName="+author.getName();
}
}
結果:
4 日誌配置
市面上的日誌框架;
JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j….
日誌門面 (日誌的抽象層)
JCL(Jakarta Commons Logging) SLF4j(Simple Logging
Facade for Java) jboss-logging
日誌實現
Log4j JUL(java.util.logging)
Log4j2 Logback
最佳組合
日誌門面: SLF4J;
日誌實現:Logback;
SpringBoot:
底層是Spring框架,Spring框架預設是用JCL;‘
SpringBoot選用 SLF4j和logback;
springboot日誌的使用
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
注意:以後開發的時候,日誌記錄方法的呼叫,不應該來直接呼叫日誌的實現類,而是呼叫日誌抽象層裡面的方法; 給系統裡面匯入slf4j的jar和 logback的實現jar。
5 profile配置
prod為生產環境,dev為開發環境。
首先建立如下檔案:
application-dev.properties
server.port=8888
application-prod.properties
server.port=80
application.properties
spring.profiles.active=prod //表示當前的環境為生產環境
執行結果:
springboot執行原理
1 檢視springboot做了哪些自動配置
可以通過如下方式檢視當前專案已啟用和未啟用的自動配置的報告:
(1)執行jar時候增加–debug引數
java -jar xx.jar --debug
(2)在application.properties中:
debug=true