目录
1.属性配置文件分类
属性配置两种文件: .properties和.yml,如我们想要配置tomcat启动时端口和上下文,两种文件配置分别如下:
properties :
server.port=8081
server.context-path=/boot
yml : (注意:后边有空格) (推荐使用)
server:
port: 8082
context-path: /boot
大家配置完可以分别通过 http://localhost:8081/boot/ 和 http://localhost:8082/boot/ 测试下.
2.属性配置在类中使用(@Value标签的使用)
application.yml 如下,我们要使用配置文件中的name和age
server:
port: 8081
context-path: /
name: milo
age: 27
SampleController.java 如下 :
package cn.milo.controllor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Created by admin on 2017/6/25.
*/
@Controller
public class SampleController {
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
@RequestMapping("/")
@ResponseBody
public String demo1(){
return "name : " + name + " , age = " + age;
}
}
通过http://localhost:8081/验证 输出结果 :
name : milo , age = 27
有时我们需要在配置中使用上边已经配置好的配置如 :
server:
port: 8081
context-path: /
name: milo
age: 27
shangmingtao: name is ${name} , age = ${age}
SampleController.java 如下 :
@Value("${shangmingtao}")
private String shangmingtao;
@RequestMapping("/")
@ResponseBody
public String demo1(){
return shangmingtao;
}
通过http://localhost:8081/验证 输出结果 :
name is milo , age = 27
3.属性配置在类中使用(@ConfigurationProperties标签的使用)
将配置文件修改为如下 :
server:
port: 8081
context-path: /
shangmingtao:
name: milo
age: 27
新建一个java类, shangmingtao.java(这是我名字 :D)
package cn.milo.controllor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* Created by admin on 2017/7/4.
*/
@Component //这个注解不能丢,否则无法注入
@ConfigurationProperties(prefix = "shangmingtao") //指定前缀
public class shangmingtao {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
SampleController.java 如下 :
package cn.milo.controllor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Created by admin on 2017/6/25.
*/
@Controller
public class SampleController {
@Autowired
private shangmingtao shangmingtao;
@RequestMapping("/")
@ResponseBody
public String demo1(){
return shangmingtao.getName() + " , " + shangmingtao.getAge();
}
}
访问 : http://localhost:8081/ 结果 :
milo , 27
4.spring.profiles.active 的使用
很多时候我们生产环境和开发环境用的配置是不一样的.每次都要改一大堆配置很麻烦,所以我们通过spring.profiles.active进行切换. resources目录结构 :
application.yml
spring:
profiles:
active: dev #根据需要选择启动时选用的配置文件
application-dev.yml
server:
port: 8081
context-path: /
shangmingtao:
name: milo
age: 27
application-prod.yml
server:
port: 8082
context-path: /
shangmingtao:
name: milo
age: 18
通过spring-boot:run 或执行main方法启动均可,通过访问8081和8082验证自己的配置是否正确.
5.jar 方式启动
通过 clean package方式将项目打成jar包,jar包存放在target目录中,不清楚的同学可以看下我之前写的 maven入门:依赖 聚合 继承(一) , 进到jar所在的目录通过如下命令启动 :
java -jar bootdemo4web.jar --spring.profiles.active=prod
和4中的测试结果一样.
6.@RequestParam 和 @GetMapping 介绍
我之前写过Controller常用注解的介绍, Spring Boot : 自动JSON转换和热部署(二) , 这里做下补充.
@RequestParam 注解 : 此注解用来接通过url传递的参数,如: http://localhost:8082/?id=1 ,大家注意啊,这个url没写错.@RequestMapping(“/”)时这样写是OK的.
看下代码:
@RequestMapping("/")
@ResponseBody
public String demo1(@RequestParam(value = "id" , defaultValue = "2") Integer id){
/*
defaultValue 中的值必须是字符串,RequestParam会自动转型.
*/
return shangmingtao.getName() + " , " + shangmingtao.getAge() + " , id = " +id;
}
@GetMapping注解 :
@GetMapping("demo11") //和下方写法等同
@RequestMapping(value = "demo11" , method = RequestMethod.GET)
还有@PostMapping同理.