application.yml的格式写法和pom.xml读取配置插件方式

 更新时间:2023年07月20日 09:44:02   作者:qq_36984017  
这篇文章主要介绍了application.yml的格式写法和pom.xml读取配置插件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

application.yml格式写法和pom.xml读取配置插件

application.yml的格式写法:(注意在值的前面有空格)

server:
    port: 8081
aa:
    name: 代斌
    age: 21
    list: [你好, 哈利]
    map: {a: 世界,b: 不知道}
    dog: {dog_name: 狗名字, dog_age: 89}

想要项目中可以读取配置文件中的信息需要配置插件

<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

用法

**Aa类**

package com.example.daibin.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "aa")
public class Aa {
    private String name;
    private int age;
    private List<Object> list;
    private Map<String,Object> map;
    private Dog dog;
    @Override
    public String toString() {
        return "Aa{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", list=" + list +
                ", map=" + map +
                ", dog=" + dog +
                '}';
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public List<Object> getList() {
        return list;
    }
    public void setList(List<Object> list) {
        this.list = list;
    }
    public Map<String, Object> getMap() {
        return map;
    }
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }
    public Dog getDog() {
        return dog;
    }
    public void setDog(Dog dog) {
        this.dog = dog;
    }
}

**dog类**

package com.example.daibin.bean;
public class Dog {
    private String dog_name;
    private int dog_age;
    @Override
    public String toString() {
        return "Dog{" +
                "dog_name='" + dog_name + '\'' +
                ", dog_age=" + dog_age +
                '}';
    }
    public String getDog_name() {
        return dog_name;
    }
    public void setDog_name(String dog_name) {
        this.dog_name = dog_name;
    }
    public int getDog_age() {
        return dog_age;
    }
    public void setDog_age(int dog_age) {
        this.dog_age = dog_age;
    }
}

这是输出的结果(说明读取配置文件中的信息成功)

Aa{name=’代斌’, age=21, list=[你好, 哈利], map={a=世界, b=不知道}, dog=Dog{dog_name=’狗名字’, dog_age=89}}

SpringBoot配置文件(application.properties、application.yml与pom.xml)

配置文件–application.properties与application.yml

老式配置文件是application.properties,新式配置文件是application.yml。

不同的配置文件可以用于不同的用处,依次是开发dev、测试test和生产product。

在这里插入图片描述

项目目录构建如下:

在这里插入图片描述

在新配置文件中application.yml(位于config目录下 )中指定生效哪种类型的配置,如dev、test和product。

spring:
  profiles:
    active: dev

配置文件application-dev.yml

的具体内容可根据需要从网上摘取,示例仅供参考。

#服务端口
server:
  port: 8080
#日志
logging:
  level:
    com.example.demo.mapper: debug   # 将mapper接口所在包的日志级别改成Debug,可以在控制台打印sql。
spring:
  # 数据库驱动
  datasource:
    # driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/mytest?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8  #数据库mytest;时区serverTimezone世界标准时间;服务器端身份校验useSSL
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    # Druid的配置(数据库连接池除了druid外,还有DBCP和C3PO,druid是阿里巴巴开发的,为监控而生的数据库连接池,性能强大,能够通过页面分析sql的性能)
    druid:
      initial-size: 50           # 初始化时建立物理连接的个数
      minIdle: 50                # 最小连接池数量
      maxActive: 100             # 最大连接池数量
      maxWait: 60000             # 从连接池中获取连接的最大等待时间,单位毫秒。默认-1,即不超时。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降
      timeBetweenEvictionRunsMillis: 60000 #单位毫秒
      minEvictableIdleTimeMillis: 300000   # 配置一个连接在池中最小生存的时间,单位是毫秒
      validationQuery: select 1  # 验证sql是否可用,每中数据库的配置值都不同
      testWhileIdle: true        # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      testOnBorrow: false        # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      testOnReturn: false        # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      filters: stat,wall,slf4j   #监控统计拦截的filters,去掉后监控界面sal无法统计,wall用于防火墙
      connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      # 配置 WebStatFilter,WebStatFilter 用于采集 web-jdbc 关联监控的数据:
      web-stat-filter:
        enabled: true           # 启用 WebStatFilter
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      # StatViewServlet 的配置
      stat-view-servlet:
        url-pattern: "/druid/*"   # 内置监控页面的地址
        enabled: true             # 启用内置的监控页面
        allow: 127.0.0.1          # IP白名单,未配置则只能在本地访问,多个的华是127.0.0.1,192.168.10.100
        reset-enable: false       # 开启 Reset All 功能   reset-enable 属性即使设置为 false,重置按钮也会显示,只是点击该按钮并不会重置而已
        login-username: admin     # 设置登录用户名
        login-password: admin     # 设置登录密码
        # allow=127.0.0.1         # 白名单(如果allow没有配置或者为空,则允许所有访问)
        # deny=                   # 黑名单(deny 优先于 allow,如果在 deny 列表中,就算在 allow 列表中,也会被拒绝)
# mybatis配置
mybatis:
  mapper-locations: classpath:mapper/*.xml         # 标注待解析的mapper的xml文件位置
  type-aliases-package: com.example.demo.domain    # 标注实体类位置
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 指定mybatis所用日志的具体实现,未指定时将自动查找
    map-underscore-to-camel-case: true       # 开启自动驼峰命名规则(camel case)映射
    lazy-loading-enabled: true               # 开启延时加载开关
    aggressive-lazy-loading: false           # 将积极加载改为消极加载(即按需加载),默认值是false
    lazy-load-trigger-methods: ""            # 阻挡不相干的操作触发,实现懒加载
    cache-enabled: true                      # 打开全局缓存开关(二级环境),默认值是true
# MyBatis使用pageHelper分页
pagehelp:
  helper-dialect: mysql             # 配置使用哪种数据库语言,不配置的话pageHelper也会自动检测
  reasonable: true                  # 在启用合理化时,如果pageNum<1,则会查询第一页,如果pageNum>pages 则会查询最后一页
  support-methods-arguments: true   # 支持通过Mapper接口参数来传递分页参数,默认值为false,分页插件会从查询方法的参数值中,自动根据上面的param
  params: count=countSql
mybatis-plus:
  configuration:
    #控制台打印完整带参数SQL语句
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    call-setters-on-nulls: true
  # 这里根据自己项目的包修改,扫描到自己的*xml文件
#  mapper-locations:
spring.thymeleaf.content-type: text/html
spring.thymeleaf.cache: false
spring.thymeleaf.mode: LEGACYHTML5

配置文件–pom.xml

扩展: 数据库连接池—druid:阿里巴巴开发的,为监控而生的数据库连接池,其性能强大,能够通过页面分析sql的性能。

https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter 网站中可以查到最新的druid版本,然后可以在pom.xml中增加druid依赖。

pom.xml代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--在pom.xml中添加druid的依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--在pom.xml中添加fastjson的依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <!--指选择大于1.2.78以上的最新版本(包括1.2.78版本)-->
            <version>[1.2.78,)</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>
        <!--MyBatis使用pageHelper分页-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.0</version>
        </dependency>
    </dependencies>
    <build>
        <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <!-- 打包resource里的项目配置文件 -->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>static/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.7.RELEASE</version>
            </plugin>
            <plugin><!--编译跳过测试文件检查的生命周期-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java线程并发访问代码分析

    Java线程并发访问代码分析

    这篇文章主要介绍了Java线程并发访问代码分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java应用服务器之tomcat部署的详细教程

    Java应用服务器之tomcat部署的详细教程

    这篇文章主要介绍了Java应用服务器之tomcat部署,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java NIO实现群聊系统

    Java NIO实现群聊系统

    这篇文章主要为大家详细介绍了Java NIO实现群聊系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • kotlin和Java的相互调用示例详解

    kotlin和Java的相互调用示例详解

    Kotlin 的设计过程中就考虑到了与 Java 的互操作性。在 Kotlin 中可以直接调用既有的 Java 代码, 反过来在 Java 中也可以很流畅地使用 Kotlin 代码,下面这篇文章主要给大家介绍了关于kotlin和Java的相互调用的相关资料,需要的朋友可以参考下。
    2018-02-02
  • 一篇文章带你入门Java Script

    一篇文章带你入门Java Script

    这篇文章主要介绍了新手入门JavaScript的的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2021-08-08
  • Java设计模式之单一职责原则精解

    Java设计模式之单一职责原则精解

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。本篇介绍设计模式七大原则之一的单一职责原则
    2022-02-02
  • Java轻松实现批量插入或删除Excel行列操作

    Java轻松实现批量插入或删除Excel行列操作

    在职场生活中,对Excel工作表的行和列进行操作是非常普遍的需求,下面小编就来和大家介绍一下如何在Java中完成批量插入、删除行和列的操作吧
    2023-10-10
  • Springboot整合nacos报错无法连接nacos的解决

    Springboot整合nacos报错无法连接nacos的解决

    这篇文章主要介绍了Springboot整合nacos报错无法连接nacos的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java实现定时器的四种方式

    Java实现定时器的四种方式

    这篇文章主要介绍了Java实现定时器的四种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringMVC 中文乱码的解决方案

    SpringMVC 中文乱码的解决方案

    这篇文章主要介绍了SpringMVC 中文乱码的解决方案,帮助大家更好的理解和学习使用SpringMVC,感兴趣的朋友可以了解下
    2021-04-04

最新评论