首页IT科技springboot2.4配置文件(Spring Boot实现任意位置的properties及yml文件内容配置与获取)

springboot2.4配置文件(Spring Boot实现任意位置的properties及yml文件内容配置与获取)

时间2025-05-02 14:41:24分类IT科技浏览3041
导读:〇、参考资料 1、Spring Boot 中文乱码问题解决方案汇总...

〇           、参考资料

1                、Spring Boot 中文乱码问题解决方案汇总

https://blog.51cto.com/u_15236724/5372824

2     、spring boot读取自定义配置properties文件★

https://www.yisu.com/zixun/366877.html

3     、spring boot通过配置工厂类          ,实现读取指定位置的yml文件★

https://blog.csdn.net/weixin_45168162/article/details/125427465

4                、springBoot 读取yml 配置文件的三种方式(包含以及非component下)★

https://blog.csdn.net/weixin_44131922/article/details/126866040

5          、SpringBoot集成Swagger的详细步骤

https://blog.csdn.net/m0_67788957/article/details/123670244

一     、项目介绍

1                、项目框架

2          、技术栈

Spring Boot+Swagger+Lombok+Hutool

3、项目地址

https://gitee.com/ljhahu/kettle_processor.git

需要权限请联系:liujinhui-ahu@foxmail.com

二                、properties配置与使用

1               、默认配置文件

(1)配置-application.properties

# Spring Boot端口配置 server.port=9088 # spring数据源配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.password=qaz123 spring.datasource.username=root spring.datasource.url=jdbc:mysql://192.168.40.111:3306/visualization?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true spring.thymeleaf.prefix=classpath:/templates/

(2)读取

Spring Boot自己会读取                ,配置数据源、thymeleaf等信息

2           、自定义配置文件

(1)配置-kettle.properties

# properties https://blog.csdn.net/weixin_42352733/article/details/121830775 environment=xuelei-www kettle.repository.type=database kettle.repository.username=admin kettle.repository.password=admin

(2)使用-读取单个值-PropertiesController.java

package com.boulderaitech.controller; import com.boulderaitech.entity.KettleRepositoryBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Api("properties测试") @RestController //Controller和RestController的区别 @PropertySource("classpath:kettle.properties") //默认是application.properties //可以将PropertySource注解加入entity      ,也可以加入controller将bean注入 public class PropertiesController { @Value("${environment}") private String envName; @Autowired private KettleRepositoryBean kettleRepositoryBean; @RequestMapping("/getEnv") @ApiOperation("properties方式获取当前的环境") public String getEnv() { return "hello " + envName; } @ApiOperation("properties方式获取当前的环境") @RequestMapping("/getRepoInfo") public String getRepoInfo() { return "hello " + kettleRepositoryBean.toString(); } }

(3)使用-读取多个值到对象-KettleRepositoryBean.java

package com.boulderaitech.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @Component @NoArgsConstructor @AllArgsConstructor @ConfigurationProperties(prefix = "kettle.repository") public class KettleRepositoryBean { private String type; private String username; private String password; }

三               、yml配置

1     、默认配置文件

application.yml

2           、自定义配置文件

(1)配置-repository.yml

kettle: repository: repo1: type: postgresql ip_addr: 192.168.4.68 port: 5432 username: admin password: admin db_name: kettle version: 8.0.0

(2)实现任意位置读取的工厂类-YamlConfigFactory.java

package com.boulderaitech.factory; import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.core.env.PropertiesPropertySource; import org.springframework.core.env.PropertySource; import org.springframework.core.io.support.DefaultPropertySourceFactory; import org.springframework.core.io.support.EncodedResource; import java.io.IOException; import java.util.Properties; /** * 在任意位置读取指定的yml文件 * 参考:https://blog.csdn.net/weixin_45168162/article/details/125427465 */ public class YamlConfigFactory extends DefaultPropertySourceFactory { //继承父类          ,可以重载父类方法@Override //实现接口               ,重写方法@Override @Override public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException { String sourceName = name != null ? name : resource.getResource().getFilename(); if (!resource.getResource().exists()) { return new PropertiesPropertySource(sourceName, new Properties()); } else if (sourceName.endsWith(".yml") || sourceName.endsWith(".yaml")) { Properties propertiesFromYaml = loadYml(resource); return new PropertiesPropertySource(sourceName, propertiesFromYaml); } else { return super.createPropertySource(name, resource); } } private Properties loadYml(EncodedResource resource) throws IOException { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(resource.getResource()); factory.afterPropertiesSet(); return factory.getObject(); } }

(3)使用-读取单个值-KettleEnvBean.java

package com.boulderaitech.entity; import com.boulderaitech.factory.YamlConfigFactory; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @Data @Component @AllArgsConstructor @NoArgsConstructor @PropertySource(value = "classpath:repository.yml",factory = YamlConfigFactory.class)//需要通过工厂加载指定的配置文件 public class KettleEnvBean { @Value("${kettle.version}") private String kettleVersion; }

(4)使用-读取多个值到对象-KettleRepositoryYmlBean.java

package com.boulderaitech.entity; import com.boulderaitech.factory.YamlConfigFactory; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @Data @AllArgsConstructor @NoArgsConstructor @PropertySource(value = "classpath:repository.yml",factory = YamlConfigFactory.class)//需要通过工厂加载指定的配置文件 @ConfigurationProperties(prefix = "kettle.repository.repo1") //需要添加spring boot的注解      ,才可以使用 //思考:能否通过反射操作修改注解的参数 @Component() public class KettleRepositoryYmlBean { private String type; private String ip_addr; //命名只能用下划线 private String username; private String password; private String port; private String db_name; }

(5)使用-YmlController.java

package com.boulderaitech.controller; import com.boulderaitech.entity.KettleEnvBean; import com.boulderaitech.entity.KettleRepositoryYmlBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController //使用controller返回的结果会按照template进行解析 //使用RestController则会返回对应的字符串 public class YmlController { @Autowired private KettleRepositoryYmlBean kettleRepositoryYmlBean; @Autowired private KettleEnvBean kettleEnvBean; @RequestMapping(value = "/getKettleVersion") //默认是get public String getKettleVersion() { return "hello " + kettleEnvBean.getKettleVersion(); } // @GetMapping("/getRepoInfoYml")     ,不支持get方法 //@RequestMapping(value = "/getRepoInfoYml", method = RequestMethod.POST) @RequestMapping(value = "/getRepoInfoYml") public String getRepoInfoYml() { return "hello " + kettleRepositoryYmlBean.toString(); } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
u启动怎么装系统win10(如何使用U盘启动盘(UltraISO)安装原版Win10系统) windows server 2019服务器配置(Windows Server 2019 服务器系统安装图文教程)