zoukankan      html  css  js  c++  java
  • Spring Boot(2)

    之前写的程序都是按照Spring Boot的默认设置运行的
    当然这些设置都是可以手工配置的

    我们可以在项目当中创建一个application.properties文件
    这个文件中用以编写需要指定的配置项

    这个文件可以放在下列地方

    1. 当前目录的/config子目录下
    2. 当前目录下
    3. classpath根目录的/config包下
    4. classpath的根目录下

    1和2适合生产环境 , 3和4适合开发环境
    Spring会在这4个位置依次寻找该配置文件 , 先找到的为准

    这个配置文件当中可以写Spring Boot预定义的配置项
    比如 ( 注意等号的两端不要加空格 )

    server.port=8081
    server.context-path=/pppp
    

    这些配置项会在程序运行的时候生效 , 也就是在8081端口启动tomcat
    访问的根路径是 /pppp

    也可以在这个配置文件里编写自定义的配置项
    配置项之间可以进行相互引用

    test.name=spring
    test.desc=${test.name} nice
    

    配置随机变量
    利用的是RandomValuePropertySource类

    test.secret=${random.value}
    test.number=${random.int}
    test.number.lessThanTen=${random.int(10)}
    test.number.inRange=${random.int[1024,2048]}
    

    注入获取配置项

    @RestController
    public class HelloController {
    
        @Value("${test.ab}")
        private String testStr;
    
        @RequestMapping(value="/", method = RequestMethod.GET)
        public String index() {
            return "Hello Spring Boot : " + testStr;
        }
    }
    

    @Value注解实际上执行的就是Spring当中的设值注入
    这个注解也可以加在控制器方法的参数上面

    Spring Boot程序运行的时候 , 会把这个配置文件中的内容全部加载到自身的作用域当中
    可以使用${}表达式的形式进行获取

    @ConfigurationProperties

    使用这个注解可以把配置项当中的属性自动注入到某个bean的属性当中
    比如

    @Component
    @ConfigurationProperties(prefix="test")
    public class MyConfig {
    	private String ab;
    	private String ac;
    //getter与setter方法...
    }
    

    注意 :
    采用这种方式需要引入这个jar包

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <version>1.5.4.RELEASE</version>
    </dependency>
    
    使用Environment接口
    @Autowired
    private Environment env;
    

    自动注入之后 , 就可以从该对象中获取配置项的值了 , 比如env.getProperty("test.ac")


    使用YAML

    YAML是"另一种标记语言"的缩写
    它是一种直观的能够被计算机识别的数据序列化格式
    而且对于人来说可读性更高
    容易和脚本语言交互 , 通常用来表达资料序列

    对于spring boot程序来说 , 也可以使用application.yml来进行配置

    server:
      port: 8082
      context-path: /test
    

    注意不同层级之间的缩进 , 以及在属性值之前 ( 冒号后面 ) 必须有一个空格
    YAML采用的就是这种严格的语法格式


    命令行参数

    所有的配置项都可以通过在运行时从命令行传入
    并且这样传入的配置项 优先级是最高的
    比如

    java -jar app.jar --server.port=8090
    

    外部配置文件

    在运行时可以从命令行传参指定外部的一个配置文件 , 作为该应用的配置文件 ( 项目内部的配置文件不会生效 )

    java -jar app.jar --spring.config.location=/etc/application.yml
    

    同样可以使用yml文件或者properties文件


    多个配置文件

    有些情况下 , 我们在开发环境与生产环境 , 需要使用的配置项是不同的
    但是在环境切换时 , 逐个修改配置项又十分繁琐 , 所以我们可以使用多个配置文件
    只需要指定让哪个生效即可

    比如我在这里创建了这几个配置文件 ( 实际上SpringBoot程序启动的时候直接去找的仍然是application.yml )
    application.yml当中只写如下配置项

    spring:
      profiles:
        active: prod
    

    这就代表只让application-prod.yml生效

  • 相关阅读:
    Netty回调与Channel执行流程分析
    Netty执行流程分析与重要组件介绍
    HBase 介绍
    Java文件上传下载原理
    ngxtop安装和使用
    开启Nginx监控 with-http_stub_status_module
    Spring 事务模板方法设计模式
    Spring 事务管理
    JdkDynamicAopProxy 拦截器链的获得与递归执行
    CgLib实现AOP
  • 原文地址:https://www.cnblogs.com/programInit/p/7087550.html
Copyright © 2011-2022 走看看