15.基于SpringBoot的多模块项目引入其他模块时@Resource无法注入其他模块stereotype注解类对象的问题解决(加载另一个模块的XML配置文件解决)
15.基于SpringBoot的多模块项目引入其他模块时@Resource无法注入其他模块stereotype注解类对象的问题解决(加载另一个模块的XML配置文件解决)
在多模块项目中,往往需要在一个模块中注入另一个模块中的服务层(@Service)或持久层(@Repository)类的对象,但有时会报错无法找到,异常如下
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jedisDaoImpl'
这个错误纠结了我一天,为此我特地总结一下,防止别人步我的后路,浪费时间,
首先讲下我的项目情况,我需要在一个模块A(模块名:consumer,SpringBoot搭建 ) 调用另一个模块B(模块名:redis,Maven搭建),
1.模块B采用Maven搭建的情况
模块B是完成redis一些类的声明,起初没有接触过SpringBoot,就想着模块按照原先的项目构建方式(简单Maven,因为懒得去application.properties重新配置),配置了关于redis的XML,然后打包上传到maven去,以为像之前一样,其他项目就可以直接访问了
之前Dubbo项目可以访问原因可能是:这段配置的意思是,加载所依赖项目下的相关文件夹的XML与properties文件
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource>
然后通过模块A进行调用,发生异常错误,无法找到对应bean
@Resource private JedisDao jedisDaoImpl; //错误: Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jedisDaoImpl':
错误原因分析:以前Maven项目(war)项目是有web.xml配置文件,进行一些配置文件加载,
然后现在模块A采用了SpringBoot技术,简化配置,所有的配置都在application.properties,然后靠启动类启动,然后我模块A的启动类如下
@SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
从中模块A启动类,我们没有看到任何 关于 模块 B 的 XML文件的配置加载,所以要怎么样加载到另一个模块关于XML文件配置,然后就想着把模块B也改成SpringBoot模式,然后再在模块A中启动类设置把模块B的启动类也一起加载
这段话不明白请参照:https://blog.csdn.net/yang_456/article/details/82151124
- 模块B采用SpringBoot模式
项目模块结构图
模块A启动类修改后
@SpringBootApplication @ComponentScan(basePackages = {"com.example","com.kmall"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
"com.example",“com.kmall” 两个包分被为两个SprigBoot模块启动类所在的包名,这样就可以通过启动类,来加载相关配置,
因为需要让模块B的XML文件被加载到,在SpringBoot中不推荐XML文件的格式,所以我们需要把XML文件装载成类,具体代码如下
package com.kmall.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; /** * Created by Administrator on 2019/10/5 0005. */ @Configuration @ImportResource(locations= {"classpath:applicationContext-jedis.xml"}) public class Config { }
这样就可以加载到xml文件的配置信息,因为SpringBoot的启动类,默认扫描同包以及子包的注解,然后模块B的启动类又被模块A的启动类加载,这样模块A中就可以使用相关的配置信息了,
- 点赞
- 收藏
- 分享
- 文章举报
- 15.基于SpringBoot的多模块项目引入其他模块时@Resource无法注入其他模块stereotype注解类对象的问题解决(加载另一个模块的XML配置文件解决)
- 解决spring-boot项目中无法读取yml配置文件属性问题
- 解决eclipse创建spring boot项目加载不到application.properties配置文件的问题
- Spring boot项目整合mybatis,xml静态资源文件的放置及路径配置问题
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
- springboot项目logback.xml或者logback-spring.xml中读取不到application.yml或application.properties配置文件中的配置解决办法
- 解决SpringBoot整合shiro之后无法加载静态资源文件问题
- SpringBoot学习二:application.porperties中的配置不生效导致改端口后不生效原因,无法加载resource下的资源文件
- 在Maven项目中加载spring中的bean的配置xml文件会提示找不到解决方法
- spring-boot集成mybatis问题1:IntellijIdea中j解决自动生成代码xml配置文件中出现“uri is not registered”问题
- Spring学习总结(20)——Spring加载多个项目properties配置文件问题解决
- Spring学习总结(20)——Spring加载多个项目properties配置文件问题解决
- 解决“Idea下项目无法找到*.xml配置文件”的问题
- application.properties配置注入出现错误,配置list,map(list内含对象)多层嵌套问题,注入对象失败,无法加载到配置文件
- 解决springboot部署时使用外部文件配置项目参数的问题
- Spring 配置文件xxxx.xml文件中scheme约束exlipse自动加载不了的解决
- Spring 加载xml配置文件路径问题
- IDEA spring的xml配置文件加载不到properties属性问题
- 基于maven管理的项目中spring+mybatis配置数据源读取不到properties属性文件的问题
- springboot配置文件加载不到的问题