Spring Boot : 属性配置&Controller注解补充(四)

目录

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同理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值