application配置文件的使用

249 阅读3分钟

概述

application的作用是为应用程序提供配置信息,在springboot启动的时候,会自动加载该文件,并根据其中的配置信息对对于的应用程序进行配置

application文件分为两种

  • properties
  • yaml

配置文件的配置项有很多,常见的有数据库连接信息,日志,端口号等。

在springboot中还可以使用@ConfigurationProperties注解将配置文件中的配置项注入到Java对象中,方便进行配置和管理

这里以yaml为主来详解

应用

常见的一些配置项

 server:
   port: 8080 # 服务器端口号
   context-path: /myapp # 应用程序的上下文路径
   servlet:
     context-path: /myapp # Servlet的上下文路径
   ssl:
     enabled: true # 是否启用SSL/TLS
     key-store: classpath:ssl/server.jks # 证书库路径
     key-store-password: password # 证书库密码
     key-store-type: JKS # 证书库类型
     key-alias: tomcat # 证书别名
 spring:
   application:
     name: myapp # 应用程序名称
   datasource:
     url: jdbc:mysql://localhost:3306/mydb # 数据库连接URL
     username: root # 数据库用户名
     password: password # 数据库密码
     driver-class-name: com.mysql.jdbc.Driver # JDBC驱动类名
 logging:
   level:
     root: INFO # 根日志级别
     org.springframework.web: DEBUG # 指定包的日志级别

在Java中导入配置列定义的信息

配置类信息

 # 超级管理员
 superAdministrator:
   name: admin
   pwd: 123456

管理员类

 /**
  * 表示当前类是一个配置类
  * 通常用于定义Bean的创建方式和依赖关系 (告诉spring容器,这个类中定义的@Bean注解所创建的Bean应该被管理和维护)
  * */
 @Configuration
 /**
  * 使用注解@ConfigurationProperties注解需要和@Configuration一起使用
  * @ConfigurationProperties可以直接使用在一个普通类上,但这样做可能会导致无法被正确的扫描注册到Bean中
  * 需要使用@Configuration来提升等级,这样可以确保@ConfigurationProperties注解被正确地扫描到
  * 并且在属性值发生变化时能够自动刷新Java Bean。
  * */
 @ConfigurationProperties(prefix = "superadministrator")
 public class SuperAdministrator {
     private String name;
 ​
     private String pwd;
 ​
     public String getName(){
         return this.name;
     }
 ​
     public String getPwd(){
         return this.pwd;
     }
 ​
     /**
      * 必须需要set方法 配置文件里面的配置项才可以注入
      * */
     public void setName(String name) {
         this.name = name;
     }
 ​
     public void setPwd(String pwd) {
         this.pwd = pwd;
     }
 ​
     @Override
     public String toString() {
         return "SuperAdministrator{" +
                 "name='" + name + ''' +
                 ", pwd='" + pwd + ''' +
                 '}';
     }
 }
 ​

使用

 /**
  * 标识这个类为 controller类(处理客户端发送的请求,并返回响应结果) Rest表示返回JSON格式
  * RestController 是 Controller的升级
  * */
 @RestController
 /**
  * 用于设置当前类的url地址
  * */
 @RequestMapping("/index")
 public class IndexController {
     /**
      *  @Autowired
      *      自动在代码上下文中找到其匹配的Bean,当仅有一个匹配的Bean时,Spring将其注入@Autowire标注的变量中。
      *  @Qualifier(指定Bean名称注入)
      *      通常和@Autowired一起使用,一般在两个或者多个bean是相同的类型时,spring注入会出现混乱,就需要使用@Qualifier(“xxBean”) 来指定Bean的名称。
      *  @Resource
      *      默认通过name属性去匹配bean,找不到再按type去匹配
      *      当type属性和name属性同时指定时,会优先使用type属性匹配bean。
      * */
     @Autowired
     private SuperAdministrator admin;
 ​
     /**
      * RequestMapper可以传入多个URL (接收这些地址传递的数据)
      * 如果是多个的话 需要把path标明,如果只有一个地址可以不写(默认的)
      * @RequestMapping(path = {"/hello","hello2"})
      * */
     @RequestMapping("/hello")
     public String Hello(){
         System.out.println(admin.getName());
         return admin.toString();
     }
 ​
 }
 ​