介紹了@SpringBootApplication的詳解,解釋了該註解是由多個註解組成的組合註解,並介紹了其中的元註解,如@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。同時展示了在內嵌伺服器中傳遞參數進行測試,以及配... ...
3.5 @SpringBootApplication詳解
這是一個組合註解,就是由多個註解組成。下列註解紅框內稱為元註解(jdk提供)
@Target:指定註解作用範圍 @Retention:指定註解什麼時候生效
-
重要註解
@SpringBootConfiguration:自動配置Spring、SpringMVC相關環境
@EnableAutoConfiguration:開啟自動配置 自動配置的核心註解 自動與項目中引入第三方技術自動配置其環境 mybatis、redis、es、rabbitmq等第三方技術
@ComponentScan:組件/註解掃描 保證掃描範圍下的註解生效,掃描範圍:當前包及其子包 -
SpringBoot內嵌的伺服器傳遞參數進行測試
3.6 配置文件拆分以及載入外部配置文件
-
區分測試環境和生產環境
測試環境的配置文件一般命名為:application-dev.yml
生產環境的配置文件一般命名為:application-prod.yml
-
在公共配置環境里去決定激活哪個環境
**application.yml** # 修改內嵌伺服器埠號 server: port: 8081 spring: profiles: active: **dev** #**指定dev環境的配置文件生效**
-
載入外部配置文件
在設置中,下圖的Program arguments填入下列格式 :
- -spring.config.location=D:\Desktop\application-local-prod.yml
等於號右邊填絕對路徑,即可完成載入。
3.7 創建SpringBoot的第二種創建方式
-
通過module創建
選擇需要的依賴
創建好了,.mvc、mvnw、mvnw.cmd 是在linux中運行的。
.gitignore是git設置忽略文件的。HELP.md是介紹的文檔。
pom.xml
....... <dependencies> <!--引入web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--引入test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- 在打成jar包運行時,必須放入插件配置 註意:沒有插件,無法運行打包的項目--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
第四章、工廠創建對象
4.1 獲取基本類型、對象
application.yml
# 聲明基本屬性註入
name: 小陳
age: 23
price: 23.2
maps: "{'asd':'小紅','qwe':'大米'}" # 註意:@Value註入 格式要用 #{${"maps"}}
birthday: 2012/1/3 15:13:56 # 預設日期格式要寫成: yyyy/mm/dd HH:MM:ss
lists: jack,xiaoming,mike,abcd
# 聲明對象方式註入
orders:
age: 21
name: "小紅"
@ConfigurationProperties(value = "orders")
@Component
public class User {
private String name;
private Integer age;
get....
set....
}
@Value("${name}")
private String name;
@Value("${birthday}")
private Date birthday;
@Value("${lists}")
private List<String> lists;
@Value("#{${maps}}")
private Map<String,String> maps;
@RequestMapping("hello1")
public String hello1() {
System.out.println("name = " + name);
System.out.println("birthday = " + birthday);
for (String list : lists) {
System.out.println("list = " + list);
}
System.out.println("maps = " + maps);
return "hello1";
}
@Autowired
private User user;
@RequestMapping("hello3")
public String hello3() {
System.out.println("name = " + user.getName());
System.out.println("age = " + user.getAge());
return "hello3";
}
通過這種獲取對象的方式,要註意:一定要有set方法。
@ConfigurationProperties(value/prefix = "orders")的參數,value和prefix是一樣的
<!--根據@ConfigurationProperties構建元數據-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<!--代表依賴不會被傳遞,例如子項目繼承父項目,不會被傳遞-->
<optional>true</optional>
</dependency>
引入這個依賴後,我們在配置文件中輸入被@ConfigurationProperties修飾的對象名後,就會有對其成員變數名的提示
作者:揚眉劍出鞘
出處: https://www.cnblogs.com/eyewink/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。