springboot 读取配置信息和对应bean

简介: springboot 读取配置信息和对应bean

读取application.yml 配置信息

读取顺序 网上太多了,就复制过来了

这里说了四种方式可以把配置文件放到外部的。

第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下;

第二种是直接把配置文件放到jar包的同级目录;

第三种在classpath下建一个config文件夹,然后把配置文件放进去;

第四种是在classpath下直接放配置文件。

这四种方式的优先级是从一到四一次降低的。

person:
  person-name: 张三
  person-age: 10
//读取application.yml配置信息
@Component
@ConfigurationProperties(prefix = "person")
public class TestConfig2 {
    @Value("${person.person-name}")
    private String name;
    @Value("${person.person-age}")
    private String age;

    @Override
    public String toString() {
        return "TestConfig2{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

读取resources下面的配置信息 例如下面有一个config.yml

username: zhangsan
pwd: 123456
name: 张三
//读取classpath配置信息
@Component
@PropertySource(value = {"classpath:config.yml"},encoding = "utf-8")
public class TestConfig {
    @Value("${username}")
    private String username;
    @Value("${pwd}")
    private String pwd;
    @Value("${name}")
    private String name;

    @Override
    public String toString() {
        return "TestConfig{" +
                "username='" + username + '\'' +
                ", pwd='" + pwd + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

读取外部指定位置的配置信息

username2: file:E:/study/java/config/other.yml
pwd: 1234569
name: 张三d
//读取指定位置配置信息
@Component
//@PropertySource(value ={"file:${user.dir}/config/custom.properties","file:${user.dir}/config/custom_prison.properties"}, ignoreResourceNotFound = true)
@PropertySource(value ={"file:E:/study/java/config/other.yml"}, ignoreResourceNotFound = true,encoding = "utf-8")
public class TestConfig3 {
    @Value("${username2}")
    private String username;
    @Value("${pwd}")
    private String pwd;
    @Value("${name}")
    private String name;

    @Override
    public String toString() {
        return "TestConfig3{" +
                "username='" + username + '\'' +
                ", pwd='" + pwd + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

上传图片到指定目录和浏览图片

  1. 创建配置文件config.yml
staticAccessPath: /api/file/**
uploadFolder: E:/study/java/uploadFiles/
min: 1
max: 5
  1. 创建配置Bean
@Data
@Component
@PropertySource(value = {"classpath:config.yml"},encoding = "utf-8")
public class FileConfig {
    @Value("${staticAccessPath}")
    private String staticAccessPath;
    @Value("${uploadFolder}")
    private String uploadFolder;
    @Value("${min}")
    private int min;
    @Value("${max}")
    private int max;

    @Override
    public String toString() {
        return "FileConfig{" +
                "staticAccessPath='" + staticAccessPath + '\'' +
                ", uploadFolder='" + uploadFolder + '\'' +
                ", min='" + min + '\'' +
                ", max='" + max + '\'' +
                '}';
    }
}
  1. 创建Config
@Configuration
public class UploadFileConfig {

    @Autowired
    FileConfig config;

    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation(config.getUploadFolder());
        //文件最大
        factory.setMaxFileSize(DataSize.ofMegabytes(config.getMin()));
        // 设置总上传数据总大小
        factory.setMaxRequestSize(DataSize.ofMegabytes(config.getMin()));
        return factory.createMultipartConfig();
    }
}
  1. 配置WebMvcConfg
//http://127.0.0.1:8089/ityustudy/api/file/html169ecca9-375c-471b-abdf-72531f674d8b.jpg 浏览图片
   public  void addResourceHandlers(ResourceHandlerRegistry registry){
       registry.addResourceHandler(fileConfig.getStaticAccessPath()).addResourceLocations("file:" + fileConfig.getUploadFolder());
    }

5.上传文件

 @ApiOperation(value = "上传多张图片")
    @PostMapping("/uploadImgs")
    @ResponseBody
    public R<List<String>> uploadImgs(MultipartFile[] file) {
        if (file==null||file.length == 0) {
            return RUtil.error(0, "请上传图片");
        }
        List<String> array = new ArrayList();
        // 要上传的目标文件存放路径
        for (MultipartFile f : file) {
            String originalFilename = getSuffix(f.getOriginalFilename());
            String s = "html"+ UUID.randomUUID() + originalFilename;
            if (Utils.upload(f, fileConfig.getUploadFolder(), s)) {
                array.add(Utils.getUrl(fileConfig.getStaticAccessPath().replace("**","") + s, 0));
            } else {
                return RUtil.error(0, "上传失败");
            }
        }
        return RUtil.ok(array);
    }
相关文章
|
3月前
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
657 1
|
5月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
2月前
|
Java
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
48 2
|
2月前
|
Java Spring 容器
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
151 3
|
2月前
|
前端开发 Java 数据格式
SpringBoot中定义Bean的几种方式
本文介绍了Spring Boot中定义Bean的多种方式,包括使用@Component、@Bean、@Configuration、@Import等注解及Java配置类。每种方式适用于不同的场景,帮助开发者高效管理和组织应用组件。
|
3月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
3月前
|
Java Spring 容器
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
这篇文章讨论了在Spring Boot 3.2.1版本中,同名同类型的bean和@Service注解类之间冲突的问题得到了解决,之前版本中同名bean会相互覆盖,但不会在启动时报错,而在配置文件中设置`spring.main.allow-bean-definition-overriding=true`可以解决这个问题。
120 0
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
|
4月前
|
Java Spring
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
本文介绍了如何在Spring Boot项目中集成Swagger 2.x和3.0版本,并提供了解决Swagger在Spring Boot中启动失败问题“Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerEx”的方法,包括配置yml文件和Spring Boot版本的降级。
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
|
3月前
|
Java Shell C++
Springboot加载注入bean的方式
本文详细介绍了Spring Boot中Bean的装配方法。首先讲解了使用@Component、@Service、@Controller、@Repository等注解声明Bean的方式,并解释了这些注解之间的关系及各自适用的层次。接着介绍了通过@Configuration和@Bean注解定义Bean的方法,展示了其灵活性和定制能力。最后讨论了@Component与@Bean的区别,并提供了在Spring Boot应用中装配依赖包中Bean的三种方法:使用@ComponentScan注解扫描指定包、使用@Import注解导入特定Bean以及在spring.factories文件中配置Bean。
|
5月前
|
前端开发 数据库
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大
这篇文章介绍了如何在SpringBoot+Vue框架下实现购物车功能,包括防止商品重复加入、展示商品信息、删除商品时的提示,以及点击图片放大的前端实现。
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大