首页 > 其他分享 >SpringBoot中,如何把自定义的yml配置文件中的内容和对应类的bean对象取出

SpringBoot中,如何把自定义的yml配置文件中的内容和对应类的bean对象取出

时间:2024-10-03 20:22:28浏览次数:7  
标签:自定义 配置文件 Component springframework say org import public SpringBoot

首先 yml文件中的自定义配置如下

login-type-config:
  types:
    k1: "yuheng0"
    k2: "yuheng1"

我们有两个对应的类,yuheng0 和 yuheng1 ,他们都实现了say接口,并且重写了say方法。下面要通过请求k1 k2 获取yuheng0 和 yuheng1类的bean对象。

注意,要记得加上Component注解 交给IOC容器管理他们

这两个类的具体内容如下

package com.example.demo;

import org.springframework.stereotype.Component;

@Component
public class yuheng0 implements say{


    public void say(){
        System.out.println("yuheng0");
    }

    @Override
    public String toString() {
        return "k1 to string";
    }
}

package com.example.demo;

import org.springframework.stereotype.Component;

@Component
public class yuheng1 implements say{


    public void say(){
        System.out.println("yuheng1");
    }

    @Override
    public String toString() {
        return "k2 to string";
    }
}

package com.example.demo;

public interface say {
    void say();
}

下面是配置类,可以这么写配置来读取自定义配置的信息。这边的map是string string类型的,也就是单纯的把配置类的信息以String的形式读到map里面

package com.example.demo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component
@ConfigurationProperties(prefix = "login-type-config") // 注意要对应
public class LoginTypeConfig {
    private Map<String,String> types;

    public Map<String, String> getTypes() {
        return types;
    }

    public void setTypes(Map<String, String> types) {
        this.types = types;
    }
}

最后就是最关键的逻辑,实现ApplicationContextAware接口,他可以根据名称从ioc容器中取出对应的bean

这次我们自定义的map类型是string 和 say。根据名称拿到对应的bean对象,也就是yuheng0和yuheng1的对象。放到自定义的map里面。在请求test的时候,从map中拿出已经准备好的bean对象就可以了。

package com.example.demo;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;


@RestController
public class demo implements ApplicationContextAware {

    @Autowired
    private LoginTypeConfig loginTypeConfig;

    private static Map<String,say> res = new HashMap<>();

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

        loginTypeConfig.getTypes().forEach((k, v) -> {
            res.put(k, (say)applicationContext.getBean(v));
        });
    }


    @GetMapping("/test")
    public say test(String type)
    {
        say s = res.get(type);
        System.out.println(s.toString());
        s.say();
        return s;
    }

}

标签:自定义,配置文件,Component,springframework,say,org,import,public,SpringBoot
From: https://www.cnblogs.com/nicebaoke/p/18445964

相关文章

  • springboot+vue专家库管理系统的设计与实现【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在当今知识密集型社会中,各领域专家资源成为推动科技进步、解决复杂问题的关键力量。随着信息化技术的飞速发展,如何高效管理、合理配置并利用专家资源,成为各行各业面临的重要课题。传统的人工管理方式已难以满足大规模、高效率的专家资......
  • springboot+vue作业管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着教育信息化的快速发展,传统的教学管理模式逐渐暴露出效率低下、信息孤岛等问题。作业管理作为教学环节中的重要一环,其繁琐性和重复性使得教师和学生常常陷入沉重的负担之中。传统的纸质作业提交、批改和反馈流程不仅耗时耗力,还难以......
  • SpringBoot项目使用yml文件链接数据库异常
    SpringBoot使用properties连接数据库时没有出现问题SpringBoot使用yml连接数据库时出现:UnabletoconnecttoRedis并在报错信息中出现:发现是用户或者密码出现问题通过查询知道yml是区分数据类型的,所以如果用户名或者密码是数字的话,就要注意将密码用双引号括起来,将其识别为......
  • 美容院管理智能化:SpringBoot系统开发实战
    第四章系统设计设计一个系统不单单是设计系统的页面,可以说系统设计其本质是一个结合了众多设计过程的比较复杂的系统工程。一般来说,在完成系统设计时,需要了解和掌握很多设计的知识,有界面布局技术的知识,页面采用的字体和颜色的运用,还有页面空白的规范使用等,如何将这些元素......
  • SpringBoot美容院管理系统:开发者指南
    第三章系统分析提前通过各种渠道,比如图书馆,电脑上的网站等渠道获取跟本系统有关联的资料,同时设计调查问卷,让系统的使用者参与调查,了解其对系统的需求,然后进行系统的分析,确定本系统的开发可行性,确定本系统的功能等内容。3.1可行性分析这部分内容主要从开发的角度和运行使......
  • 【开题报告】基于Springboot+vue农村住宅房屋信息管理应用系统(程序+源码+论文) 计算机
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着农村经济的快速发展和城乡一体化进程的加速推进,农村住宅房屋作为农村居民生活与生产的重要载体,其管理效率与信息化水平日益成为影响农村现代化建......
  • SpringBootWeb
    入门创建SpringBoot工程,勾选web开发相关依赖。packagecom.example;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestController//这个注解是用来将一个类声明为一个控制器,并将其中的方......
  • springboot实战项目-寰宇外卖重难点总结
    思考前端和后端的请求地址不同,前端发送的请求,是如何请求到后端服务的?可以通过nginx反向代理将前端发送的动态请求由nginx转发到后端服务。nginx其他优点:1.提高访问速度。2.进行负载均衡。3.安全性高,保护后端服务安全。nginx负载均衡策略:1.轮询(默认):按时间顺序依次将请求分发......
  • 前端零代码-技术原理:对话框嵌套和自定义按钮| uiotos致敬amis、appsmith、codewave、g
    对话框有默认标题头和脚,带有默认的取消、确定、关闭等按钮:   对话框编辑状态和运行状态UIOTOS中对话框属常见容器,内容由任意其他页面嵌套而来。如下所示:                                   ......
  • 织梦网站迁移后如何修改数据库配置文件
    当你迁移织梦CMS网站时,需要修改数据库配置文件以确保新的数据库连接能够正常工作。以下是如何修改数据库配置文件的具体步骤:1.修改数据库配置文件定位配置文件:打开织梦CMS安装目录下的 data/common.inc.php 文件。编辑配置文件:使用文本编辑器(如Notepad++或记事本......