微服务之springboot 自定义配置(一)Application配置文件

配置的文件的格式

springboot可以识别两种格式的配置文件,分别是yml和properties 文件。我们可以将application.properties文件换成application.yml,这两个文件都可以被SpringBoot自动识别并加载,但是如果是自定义的配置文件,就最好还是使用properties格式的文件,因为SpringBoot中暂时还并未提供手动加载yml格式文件的功能(这里指注解方式)。

yml 配置文件 属性格式:配置的属性和属性值要有空格隔开。没有空格报:java.lang.IllegalArgumentException: Could not resolve placeholder 'my.name' in value "${my.name}"

server :
  port : 8888
my :
  name : forezp
  age : 12

propreties文件  格式要求:

 

server.port=8888
my.name=forezp
my.age=12

 

application.properties配置文件欲被SpringBoot自动加载,需要放置到指定的位置:src/main/resource目录下,一般自定义的配置文件也位于此目录之下。

application.properties配置文件是在SpringBoot项目启动的时候被自动加载的,其内部的相关设置会自动覆盖SpringBoot默认的对应设置项,所以的配置项均会保存到Spring容器之中。

公共配置文件自定义属性

1 server.port=8888
2 my.name= forezp
3 my.age=12

@RestController 访问属性类

package com.forezp.appConfig;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MiyaController {
    @Value("${my.name}")
    private String name;
    @Value("${my.age}")
    private int age;

    @RequestMapping("/hah")
    public String hah(){
        return name+" :   "+age;
    }
}

运行springboot项目 ,运行成功 浏览器输入网址:http://localhost:8888/hah

 springboot 启动类设置扫描包文件这里只是提下

 浏览器访问网址报404错误,如下:

 

 直接报404错误,最后检查了springboot 启动类

package com.forezp.helloworld;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController

public class HelloWorldApplication {

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

    }
    @GetMapping("/hi")
    public String  hi (){
        return "hi  I'am forezp";
    }
}

最后才弄清楚:启动类和对应的RestController类不在同一包下  。需要在启动类上方添加@ComponentScan注解扫描com.forezp.appConfig 包下的文件

Spring Boot只会扫描启动类当前包和以下的包 ,就是说现在我启动类的包是在com.forezp.helloworld下面,然后他就只会扫描com.forezp.helloworld或者com.forezp.helloworld.*下面所以的包,所以我的Controller在com.forezp.appConfig包下面Spring Boot就没有扫描到。

把controller类放到com.forezp.helloworld下面就好了

 

posted @ 2019-03-02 23:13  逆水行舟!  阅读(5603)  评论(0编辑  收藏  举报