文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring注解解析之@ImportResource

2024-04-02 19:55

关注

一、ImportResource

1.1 定义包和类

首先定义一个不会被ComponentScan扫描到的包outpackage,如下:

在这里插入图片描述

在该包内创建一个类:


package outpackage;

import org.springframework.stereotype.Service;

@Service
public class HelloService1 {
    public void method1() {
        System.out.println("class:HelloService1__method:method1");
    }
}

1.2 定义配置文件

在资源目录添加配置文件applicationContext.xml


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- 开启注解模式 -->
    <context:annotation-config/>

    <!-- 基于注解自动注册spring bean -->
    <context:component-scan base-package="outpackage"/>
</beans>

1.3 定义Java Config类

在启动类平级目录或者是子目录添加java config类保证能够被springboot扫描到,引入xml配置,如下:


package dongshi.daddy;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource({"classpath:applicationContext.xml"})
public class OuterPackageConfiguration {
}

1.4 测试代码


@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) throws URISyntaxException, IOException {
        ConfigurableApplicationContext run = SpringApplication.run(HelloWorldMainApplication.class, args);
        // 获取通过配置文件定义而被扫描到的类
        HelloService1 bean = run.getBean(HelloService1.class);
        System.out.println(bean);
    }
}

二、运行

2021-05-19 17:52:52.896  INFO 16232 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8083 (http) with context path ''
...snip...
outpackage.HelloService1@1929425f

为了证明确实是xml配置文件在起作用,而不是springboot自己扫描注册,修改配置类,注释掉@ImportResource({"classpath:applicationContext.xml"}),如下:


package dongshi.daddy;

import org.springframework.context.annotation.Configuration;

@Configuration
//@ImportResource({"classpath:applicationContext.xml"})
public class OuterPackageConfiguration {
}

然后运行:

2021-05-19 18:01:10.522  INFO 18260 --- [           main] dongshi.daddy.HelloWorldMainApplication  : Started HelloWorldMainApplication in 0.944 seconds (JVM running for 1.355)
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'outpackage.HelloService1' available
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
 at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1123)
 at dongshi.daddy.HelloWorldMainApplication.main(HelloWorldMainApplication.java:16)

可以看到就找不到对应的bean了。

到此这篇关于Spring注解解析之@ImportResource的文章就介绍到这了,更多相关@ImportResource注解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯