springboot的最強大的就是那些xxxAutoconfiguration,可是這些xxxAutoConfiguration又依賴那些starter,只有導入了這些場景啓動器(starter),咱們不少自動配置類纔能有用,而且還會新增一些功能。java
咱們要用一個場景(好比web),直接導入下面所示的依賴,可是在jar包裏面去看這個,你會發現裏面只有一些基本的配置文件,什麼類都沒有,就可以想到這個一類就相似一個公司前臺的做用,經過這個公司前臺,可以聯繫到公司內部。web
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
@Data @ConfigurationProperties(prefix = "db.hello") //配置文件的前綴 public class HelloProperties { private String before; private String after; }
@ConfigurationProperties
類型安全的屬性注入,即將 application.properties 文件中前綴爲 "db.hello"的屬性注入到這個類對應的屬性上此時這個類和properties類還沒什麼關係,必需要讓第三方傳入properties spring
@Data public class HelloWorld { private HelloProperties properties; public String sayHelloWorld(String name) { return properties.getBefore() + ":" + name + "," + properties.getAfter(); } }
@Configuration //配置類 @ConditionalOnWebApplication //判斷當前是web環境 @EnableConfigurationProperties(HelloProperties.class) //向容器裏導入HelloProperties public class HelloWorldAutoConfiguration { @Autowired HelloProperties properties; //從容器中獲取HelloProperties組件 /** * 從容器裏得到的組件傳給HelloWorld,而後再將 * HelloWorld組件丟到容器裏 * @return */ @Bean public HelloWorld helloWorld() { HelloWorld helloWorld = new HelloWorld(); helloWorld.setProperties(properties); return helloWorld; } }
作完這一步以後,咱們的自動化配置類就算是完成了瀏覽器
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ cn.n3.db.HelloWorldAutoConfiguration
@Controller public class TestController { @Autowired HelloWorld helloWorld; @RequestMapping("/hello") @ResponseBody public String sayHello() { return helloWorld.sayHelloWorld("test"); } }