当前位置: 首页 > news >正文

springboot之@ImportResource:导入Spring配置文件~

@ImportResource的作用是允许在Spring配置文件中导入其他的配置文件。通过使用@ImportResource注解,可以将其他配置文件中定义的Bean定义导入到当前的配置文件中,从而实现配置文件的模块化和复用。这样可以方便地将不同的配置文件进行组合,提高配置文件的可读性和管理性。

举例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <bean id="MyUser1" class="com.springboot.User">
        <property name="name" value="张三"></property>
        <property name="age" value="18"></property>
    </bean>
    <bean id="MyPet1" class="com.springboot.Pet">
        <property name="name" value="小猫"></property>
    </bean>
</beans>

如下所示为我们在之前学习spring时,通过XML文件的方式进行配置bean,那么这种方法配置的bean是无法通过springboot获取到的,测试如下所示:

package com.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
      ConfigurableApplicationContext run= SpringApplication.run(MainApplication.class,args);
      Boolean user1= (Boolean) run.containsBean("MyUser1");
      System.out.println(user1);//输出false
      Boolean pet1= (Boolean) run.containsBean("MyPet1");
      System.out.println(pet1);//输出false
    }
}

为了提高文件的可读性和管理性,我们可将二者进行组合,方法如下所示:

我们只需要在任意的一个自定义的配置类上加上如下所示注解,注解中表明XML文件的名称即可!

@ImportResource("classpath:beans.xml")

重新测试后输出均为true

相关文章:

  • 【数据开发】DW数仓分层设计架构与同步策略(ODS、DWD、DWS等字段含义)
  • 基于微信小程序的明星应援小程序设计与实现(源码+lw+部署文档+讲解等)
  • SQL_ERROR_INFO: “Duplicate entry ‘9003‘ for key ‘examination_info.exam_id‘“
  • 【前端】HTML5 Audio 预加载 按照队列顺序播放音频, 可以陆续往队列中加内容
  • OpenNebula的配置与应用(二)
  • VisualStudio配置OpenCV环境
  • 升级targetSdkVersion至33(以及迁移至Androidx)
  • 案例突破——再探策略模式
  • 【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023
  • tcp滑动窗口原理
  • 【已解决】opencv 交叉编译 ffmpeg选项始终为NO
  • 【测试人生】游戏业务测试落地精准测试专项的一些思路
  • TouchEffects - Android View点击特效
  • 定义现代化实时数据仓库,SelectDB 全新产品形态全面发布
  • Python爬虫解决中文乱码
  • css自学框架之选项卡
  • JS中的强制类型转换
  • 在 msys2/mingw 下安装及编译 opencv
  • vue 2 与 vue3 获取模版引用 (ref)的区别
  • STM32之DMA
  • 华夏幸福:累计未能如期偿还债务金额合计为227.91亿元
  • 用户称被冒用身份证异地办卡申请注销遭拒,澎湃介入后邯郸联通着手办理剥离
  • 摩根大通首席执行官:贸易战损害美国信誉
  • 广西贵港干旱村民抽水救甘蔗,镇政府:已组织打井、布管
  • 工信部:汽车生产企业要充分开展组合驾驶辅助测试验证,不得夸大和虚假宣传
  • 中华人民共和国和越南社会主义共和国关于持续深化全面战略合作伙伴关系、加快构建具有战略意义的中越命运共同体的联合声明