spring手动配置
本文總結自:https://www.cnblogs.com/V1haoge/p/7183408.html
SpringBoot中免除了大部分配置,但是對于一些特定的情況,還是需要我們進行手動配置的。
手動配置有兩種方式:
1.?SpringBoot為我們提供了application.properties配置文件,我們可以對默認的配置進行修改,還能加入一些第三方的配置,幾乎所有配置都可以寫到application.peroperties文件中,這個文件會被SpringBoot自動加載,
2. 自定義一個配置文件,但這些文件就需要我們進行手動加載。
?
備注1:SpringBoot可以識別兩種格式的配置文件,yml與properties,我們可以將application.properties文件換成application.yml,這兩個文件都可以被SpringBoot自動識別并加載,
但如果是自定義的配置文件,就最好還是使用properties格式的文件,因為SpringBoot中暫時還并未提供手動加載yml格式文件的功能(這里指注解方式)。
備注2:application.properties配置文件需要放置到指定的位置:src/main/resource目錄下,一般自定義的配置文件也位于此目錄之下。
?
如何使用配置項?
1. 只要是加載到Spring容器中的配置項都可以直接使用@Value("${key}")的方式來引用,一般將其配置在字段頂部,表示將配置項的值賦值給該字段。
2. 將這些配置項與一個JavaBean綁定起來使用,綁定一次,我們就可以隨時使用。
?
綁定使用分兩種情況:
1. 將application.properties中的配置與JavaBean類綁定
與屬性綁定的JavaBean的類定義頂部加@Component注解和@ConfigurationProperties(prefix="key")注解,
前者的目的是為了JavaBean可以被SpringBoot項目啟動時候被掃描到并加載到Spring容器之中,
后者為屬性綁定注解,它的作用就是將指定的前綴的配置項的值與JavaBean的字段綁定,得與@EnableConfigurationProperties(JavaBean.class)配合使用,注意二者并非使用在同一位置,
注意:為了綁定的成功,字段的名稱與配置項鍵的最后一個鍵名得相同,這樣整個鍵在去掉前綴的情況下就和字段名稱一致,以此來進行綁定。
?
2. 將自定義配置文件中的配置與Javabean綁定。
與之前的基本相同,只是配置不能自動加載,得手動加載
額外配置:
在JavaBean之上加上@PropertySource注解。
將@Component改為@Configuration,為什么這么做呢?
@Configuration注解的底層就是@Component,但是二者意義不同,@Configuration注解側重配置之意,@Component側重組件之意,當然配置也是項目組件之一,在這里我們要將配置文件屬性與JavaBean綁定,當然更側重配置之意。
?
@EnableConfigurationProperties(JavaBean.class)
@EnableConfigurationProperties注解@ConfigurationProperties注解配套使用,
標注有@ConfigurationProperties注解的Beans可以被使用標準的方式注冊(使用@Bean注解),或者,直接用使用@EnableConfigurationProperties指定注冊,例如:@EnableConfigurationProperties(JavaBean.class)
一個例子:
package com.donghao.model;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource;@Configuration @PropertySource("classpath:donghao.properties") @ConfigurationProperties(prefix="donghao1") public class Donghao {private String name;private String sex;private String age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAge() {return age;}public void setAge(String age) {this.age = age;} }定義控制器:DonghaoController
package com.donghao.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import com.donghao.model.Donghao;@RestController @RequestMapping("/donghao") @EnableConfigurationProperties(Donghao.class) public class DonghaoController {@AutowiredDonghao donghao;@Value("${donghao.name}")private String name;@Value("${donghao.sex}")private String sex;@Value("${donghao.age}")private String age;@RequestMapping("/hello")public String hello(){return "我的名字叫"+name+",我是"+sex+"生,今年"+age+"歲了!";}@RequestMapping("/ss")public String ss(){return donghao.getName()+donghao.getSex()+donghao.getAge();} }定義啟動入口類:DonghaoApplication.java
package com.donghao;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class DonghaoApplication {public static void main(String[] args) {SpringApplication.run(DonghaoApplication.class, args);}}?
轉載于:https://www.cnblogs.com/yanze/p/10438676.html
總結
以上是生活随笔為你收集整理的spring手动配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringCloud个人笔记-01-E
- 下一篇: 进程与线程的创建