Spring boot = 起步依赖+自动配置
Spring Initializr
- 从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构
Spring Initializr有几种用法。
通过Web界面使用。
通过Spring Tool Suite使用。
通过IntelliJ IDEA使用。
使用Spring Boot CLI使用 - 我使用
- IDEA创建项目->Spring Initializr创建的
- 或命令行:spring init -dweb,data-jpa,mysql,thymeleaf --build maven readinglist,会自动在当前目录生成demo.zip,就是完整的基于maven的spring-boot目录结构
注解
- @SpringBootApplication等效于以下注解组合
- Spring的 @Configuration,基于Java而不是XML的配置
- Spring的 @ComponentScan :启用组件扫描,自动配置bean
- Spring Boot 的 @EnableAutoConfiguration,开启了Spring Boot自动配置
外置配置属性(一)应用程序 Bean
- @ConfigurationProperties 注解可以在控制器中引入,application.yml自定义的配置属性变量,前提是必须导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
-
HelloWorld控制器
@RestController //使用application.yml中的lxf-customer前缀的自定义属性 @ConfigurationProperties(prefix = "lxf-customer") public class HelloWorld { private final Logger logger = LoggerFactory.getLogger(HelloWorld.class); //定义username属性,可以通过@ConfigurationProperties注解接收application.yml配置的自定义属性,必须配置setUserename方法 private String username; public void setUsername(String username) { this.username = username; } @GetMapping(value = "/hello") public String testHello() { return "hello world!" + username ; } }
-
以上例子我们也可以把,username自定义属性相关的信息放在一个单独的Bean中,比如:
CustomerProperties
package com.example.readinglist.others;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 自定义属性
*/
@Component
//带有lxf-customer前缀的属性,在application.yml中定义
@ConfigurationProperties("lxf-customer")
public class CustomerProperties {
private String username;
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
}
此时在HelloWorld
中使用application.yml在自定义的username属性:
@RestController
//使用application.yml中的lxf-customer前缀的自定义属性
@ConfigurationProperties(prefix = "lxf-customer")
public class HelloWorld {
@Autowired
//自定义属性文件,该文件通过@ConfigurationProperties("lxf-customer")
//获取application.yml中的lxf-customer.username属性
private CustomerProperties customerProperties;
@GetMapping(value = "/hello")
public String testHello()
{
return "hello world!" + customerProperties.getUsername() ;
}
}
外置配置属性(二)Profile条件化配置
- 针对不同环境的不同配置:http://m.blog.csdn.net/lazycheerup/article/details/51915185
-
使用@Profile注解
profiles.jpg
网友评论