application.yml的格式写法和pom.xml读取配置插件方式
作者: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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。