Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 停止Spring引导从依赖模块(jar)加载@Configuration文件_Java_Spring Boot_Dependency Injection - Fatal编程技术网

Java 停止Spring引导从依赖模块(jar)加载@Configuration文件

Java 停止Spring引导从依赖模块(jar)加载@Configuration文件,java,spring-boot,dependency-injection,Java,Spring Boot,Dependency Injection,我正在实现一个Spring引导应用程序,它依赖于另一个Spring模块(jar),其中包含一个@Configuration(AmcConfiguration.class)文件,我不希望加载到上下文中。我试过许多不同的例子 其中有几项是: //exclude problem configuration class @SpringBootApplication(exclude={AmcConfiguration.class}) 而且 //exclude problem bean from wit

我正在实现一个Spring引导应用程序,它依赖于另一个Spring模块(jar),其中包含一个@Configuration(AmcConfiguration.class)文件,我不希望加载到上下文中。我试过许多不同的例子 其中有几项是:

//exclude problem configuration class
@SpringBootApplication(exclude={AmcConfiguration.class}) 
而且

//exclude problem bean from within problem configuration class
@EnableAutoConfiguration
@Configuration
@ComponentScan(excludeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = IAmsClient.class)) 
//exclude problem configuration class package
@EnableAutoConfiguration
@Configuration
@ComponentScan(excludeFilters = @Filter(type = FilterType.REGEX, pattern="com.prot.mtrx.amc.config.*"))  
而且

//exclude problem bean from within problem configuration class
@EnableAutoConfiguration
@Configuration
@ComponentScan(excludeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = IAmsClient.class)) 
//exclude problem configuration class package
@EnableAutoConfiguration
@Configuration
@ComponentScan(excludeFilters = @Filter(type = FilterType.REGEX, pattern="com.prot.mtrx.amc.config.*"))  
此外,我还确保没有包命名冲突

  • spring boot root=“com.prot.am*
  • dependency=“com.prot.mtrx.amc.*”
我已经搜索示例好几天了,现在已经没有选择了。我选择了自动配置路径,但这似乎太复杂了,无法告诉spring boot不要运行一个简单的配置类

从我的日志来看,它可能嵌入了tomcat:

DEBUG o.a.tomcat.util.digester.Digester -   New match='mbeans-descriptors/mbean/operation/parameter'
DEBUG o.s.c.a.ClassPathBeanDefinitionScanner - Identified candidate component class: file [C:\TestSuite\workspace-dev\MAMClient\target\classes\com\prot\mtrx\amc\config\AmcConfiguration.class]

我遗漏了什么?

如果jar的包与Spring Boot应用程序类的包不同,那么组件扫描将不会拾取它(因为默认情况下,它会扫描相同的包及其子包)。我想可能是另一个组件扫描,或者是在某个地方显式导入的。您是否检查过这种情况?另一个选项是,另一个jar是自动获取配置的启动程序(META-INF下是否有spring.factories文件)?您是否确定,这是您不想要的配置(您是否已检查FQN)?-包是不同的。-其他组件扫描似乎很可能,我找不到它,调试日志记录是疯狂的。我可以在创建bean时中断,但我在堆栈中找不到任何有用的东西。这里的任何提示都会有帮助。-没有显式调用,因为当我注释掉bean定义时它是有效的。-依赖jar只有类,properties和一个带有maven with MANIFEST.MF的META-INF文件夹-我可以注释掉bean定义或@Configuration注释来解决这个问题,所以感觉spring boot是独立完成这项工作的。更新为添加日志条目。Tomcat加载spring bean会很奇怪。日志条目是您的debu中唯一的地方吗g log,找到您的
AmcConfiguration.class
的地方?还不喜欢这个问题!!!我所做的是将特定的配置从Java移到上下文xml文件中,这样就不会被父项目的包扫描获取。我讨厌它!但这就是我一直坚持的。感谢您迄今为止的帮助。如果jar有不同的p包比Spring Boot应用程序类大,组件扫描将不会获取它(因为默认情况下,它扫描相同的包及其子包)。我想可能是另一个组件扫描,或者是在某个地方显式导入的。您是否检查过这种情况?另一个选项是,另一个jar是自动获取配置的启动程序(META-INF下是否有spring.factories文件)?您是否确定,这是您不想要的配置(您是否已检查FQN)?-包是不同的。-其他组件扫描似乎很可能,我找不到它,调试日志记录是疯狂的。我可以在创建bean时中断,但我在堆栈中找不到任何有用的东西。这里的任何提示都会有帮助。-没有显式调用,因为当我注释掉bean定义时它是有效的。-依赖jar只有类,properties和一个带有maven with MANIFEST.MF的META-INF文件夹-我可以注释掉bean定义或@Configuration注释来解决这个问题,所以感觉spring boot是独立完成这项工作的。更新为添加日志条目。Tomcat加载spring bean会很奇怪。日志条目是您的debu中唯一的地方吗g log,找到您的
AmcConfiguration.class
的地方?还不喜欢这个问题!!!我所做的是将特定的配置从Java移到上下文xml文件中,这样它就不会被父项目的包扫描获取。我讨厌它!但这就是我一直坚持的。感谢您迄今为止的帮助。