Springboot经典入门——配置文件解读及简单入门

随着微服务的遍地开花,SpringBoot成了框架中的一颗耀眼明星。在还没有接触SpringBoot的一段时间内,一直认为Spring已经是和轻量级的框架, 即使编程过程中需要配置的内容比较繁琐,但也是使用一段时间后才会有的感触。就像ecplise的出现扼杀了netBeans,IDEA的出现也撼动了ecplise的霸主地位。新的事物或者方式方法出现体现了行业的活力,也使从业者能不断注入新鲜的血液,更能适行业的发展。以下是学习的过程中,其实写博客更像是一种学习笔记吧。

  • Springboot经典入门——踏进去的第一脚(基本概念及入门案例)
  • Springboot经典入门——刨根问底(起步依赖和自动配置原理分析)
  • Springboot经典入门——配置文件解读
  • Springboot经典入门——综合应用(整合计数)

一、yml配置

Springboot是基于约定配置的,意思是有很多默认的配置,不需要咱们配置,但是如果如果想要自己配置时,SpringBoot的配置也相当灵活。除了熟悉的application.properties的配置,还提供了特有的YML配置application.yml(application.ymal)。无论是properties还是yml形式的配置其实都是基于键值对的形式,properties已经比较了解,下面来学习下yml配置。

普通数据:

格式:    key: value

name: zhangsan

注意: value之前一个英文空格(英文)

对象数据:

格式:

key:

key1: value1

key2: value2

或者:key: {key1: value1,key2: value2}

person:
age: 23
name: zhangsan
或
person: {age: 23,name: zhangsan}

Map数据(与上一致)

key:

key1: value1

key2: value2

或者:key: {key1: value1,key2: value2}

注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别

person:
age: 24
name: lisi
或
person: {age: 24,name: lisi}

 数组数据(List、Set):

key:

-value1

-value2

city:
  - beijing
  - wuhan
  - guangzhou
  - lasa
或者:
city: [beijing,wuhan,guangzhou,lasa]

集合中的对象
RuralLove:
    - name: guangkun
    -age: 45
    -name: zhaosi
    -age: 49
    -name: wanglaoqi
    -age: 50

注:value1与之间的 - 之间存在一个空格

以上呢就是ymal配合的内容,SpringBoot的官方文档上也有详细的默认配置说明:

https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#common-application-properties

 

二、配置文件和配置bean的映射

通过@Value注解将配置的文件的配置映射到管理的bean中,代码如下:

controller代码:

package cn.com.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 快速入门Controller
 */
@Controller
public class QuickStartController {

    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private String age;

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "successful name=" +name + ",age= "+age;
    }
}

application.yml配置: 

修改默认端口和映射bean配置

server:
  port: 8888
person:
  name: zhaozilong
  age: 48

启动类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 启动类
 */
@SpringBootApplication
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);
    }
}

 运行结果:

内嵌的tomcat端口启动为8888

Springboot经典入门——配置文件解读及简单入门_第1张图片

读取数据:

Springboot经典入门——配置文件解读及简单入门_第2张图片

使用注解@ConfigurationProperties映射
 controller代码:

package cn.com.controller;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ConfigurationProperties(prefix = "person")
public class QuickStart2Controller {

    private String name;
    private String age;
    @RequestMapping("/quick2")
    @ResponseBody
    public String quick(){
        return "successful2 name=" +name + ",age= "+age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

运行结果:也是成功的

Springboot经典入门——配置文件解读及简单入门_第3张图片

Springboot经典入门——配置文件解读及简单入门_第4张图片

 从上面的例子中,我们可以看出,value的写法简单,不过仅支持单字段的映射,而ConfigurationProperties写法虽然繁琐,但是支持bean类的复杂类型封装,这也是二者最大的区别之一。

你可能感兴趣的:(SpringBoot,SpringBoot,yml,yaml,经典入门)