# Spring Boot課程筆記5: 自定義配置 ## 配置文件 ### 透過文件進行相關配置的設定 * **application.properties** -Spring Boot預設的設置文件 -於文件中進行客製化的定義,如下圖範例 ![](https://i.imgur.com/7cKfwO3.jpg) * **application.yml** -另種設定檔,透過Json格式撰寫,較常用此種方式設定Spring Boot,可參考下方範例(設置內容皆與上方properties檔相同,可用以進行對比) ![](https://i.imgur.com/4kMlI3N.jpg) ## 自定義屬性配置 ### 可於yaml內依照各專案需求配置客製屬性 * **透過@Value注解以及參數${}的方式於類別中引入客製屬性,且也可於文件中使用相同方式交互設定,如下圖所示** ![](https://i.imgur.com/SR7vxIR.jpg) *HelloController.java* ``` @Value("${book.name}") private String name; @Value("${book.author}") private String author; @Value("${book.isbn}") private String isbn; @Value("${book.description}") private String description; @GetMapping("/books/{id}") public Object getOne(@PathVariable long id) { Map<String, Object> book = new HashMap<>(); book.put("name", name); book.put("isbn", isbn); book.put("author", author); book.put("description", description); return book; } ``` * **透過實體類別接收客製屬性** -藉由@ConfigurationProperties於實體類別中引入相對應的自定義屬性,且藉由@Component標注該類別為元件作為使用,並於原本欲引入的類別中透過@Autowired注入類別,下方為範例 ![](https://i.imgur.com/N7VviwJ.jpg) *Book.java* ``` @Component @ConfigurationProperties(prefix = "book") public class Book { private String name; private String author; private String isbn; private String description; public Book() { } //下方Getter Setter省略 } ``` *HelloController.java* ``` public class HelloController { @Autowired private Book book; @GetMapping("/books/{id}") public Object getOne(@PathVariable long id) { return book; } } ``` ## 多環境配置 ### EX: UAT/ SIT/ PRD環境不同配置 * **新增application-{自定義參數}.yml文件來定義不同環境時所需的配置** -例application-uat.yml/ application-sit.yml/ application-prd.yml -透過原始application.yml中spring.profiles.active給予參數決定該次啟動時要執行哪個文件 *application.yml(原始文件)* ![](https://i.imgur.com/kuBGmBY.jpg) *application-sit.yml(SIT環境文件)* ![](https://i.imgur.com/dZYTmOc.jpg) *application-prd.yml(Production環境文件)* ![](https://i.imgur.com/P3T6875.jpg) [參考課程Reference](https://www.udemy.com/course/spring-boot-u/) ###### tags: `Spring Boot`