我有一个Spring Boot应用程序(Y),它依赖于一组打包为x.jar并在应用程序Y的pom.xml中作为依赖项提及的库文件。
x.jar有一个名为(User.java)的bean。应用程序Y有一个名为(Department.java)的java类。
当我尝试在Department.java中自动装配User.java实例时,出现以下错误
我不能@Autowire从属库Jar中存在的Bean吗?
无法自动连线栏位:私人com.User使用者;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到类型为[com.User]的合格Bean作为依赖项:至少应有1个有资格作为该依赖项自动装配候选者的bean。依赖项注释:{@
org.springframework.beans.factory.annotation.Autowired(required = true)}找不到依赖项类型为[com.User]的合格Bean:期望至少有1个符合此依赖项自动候选条件的bean。依赖项注释:{@
org.springframework.beans.factory.annotation.Autowired(required = true)} **
这是Spring Boot应用程序“ Y”中的代码
package myapp;
@Component
public class Department {
@Autowired
private com.User user;
//has getter setters for user
}
这是库x.jar中User.java的代码
package com;
@Component
@ConfigurationProperties(prefix = "test.userproperties")
public class User {
private String name;
//has getter setters for name
}
这是应用程序Y的pom.xml中x.jar的依赖项
<groupId>com.Lib</groupId>
<artifactId>x</artifactId>
<version>001</version>
</dependency>
这是应用程序“ Y”中的主类
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableZuulProxy
@EnableGemfireSession(maxInactiveIntervalInSeconds=60)
@EnableCircuitBreaker
@EnableHystrixDashboard
@EnableDiscoveryClient
public class ZuulApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);
}
}
部门和用户处于不同的软件包下。
解决方案:我应用了以下两个步骤,现在自动装配工作正常。
步骤1:在jar文件中添加了以下类
package com
@Configuration
@ComponentScan
public class XConfiguration {
}
步骤2:将此配置类导入到Y项目的主类中
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableZuulProxy
@EnableGemfireSession(maxInactiveIntervalInSeconds=60)
@EnableCircuitBreaker
@EnableHystrixDashboard
@EnableDiscoveryClient
@Import(XConfiguration.class)
public class ZuulApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);
}
}
您需要添加主类和User类的包名称,以100%确定,但更有可能的是,User类与主类不在同一个包(或子包)中。这意味着不会扫描组件。
您可以强制spring查看其他这样的软件包:
@ComponentScan(basePackages = {"org.example.main", "package.of.user.class"})
我已经尝试了以下问题中的解决方案,但在我的情况下都不起作用: 错误: XLSHTTPSMessageConverter:
问题内容: 我有一个已创建的模块/ jar,正在用作util 库。我在那里创建了一个服务,如下所示: …它位于以下包中的位置:com.inin.architect.permissions和我的主应用程序中,我正在引用/加载此jar(即,设置为该应用程序的Maven POM.xml文件中的依赖项),例如所以: 在应用程序中,我想使用该服务,例如: 在应用程序的spring设置中,我得到了以下信息:
我已经创建了一个模块/jar,并将其用作util库。我在其中创建了一个服务,如下所示: 那么,如何将bean从lib带入应用程序呢?当然有办法。您必须将库设置为一个完整的spring MVC应用程序才能工作吗?也就是说,你必须在库中设置@configuration和@componentscan吗?
我想为Dao类编写一个JUnit测试。dao不需要任何save方法,因为它只读取一些数据。 测试使用的是HSQLDB,我需要先插入一些测试数据。由于我不想只编写代码来使测试运行,所以我扩展了DaoImpl类,使其具有一个save方法。
我正在努力从我的自定义库中自动生成bean,这是和Gradle一起导入的。读了几个类似的题目后,我仍然无法找到解决方法。 我有一个Spring Boot项目,它依赖于另一个项目(我的带有组件、存储库等的自定义库)。这个库是一个Spring不可运行的jar,主要由域实体和存储库组成。它没有可运行的Application.Class和任何属性... 错误: Com.MyProject.CustomLi
我正在构建一个自包含的应用程序(JAR包括所有必需的库)来验证一些数据库操作。当我试图构建基于注释的应用程序时,它在Eclipse中运行良好,但从JAR中它给Bean找不到异常。 以下是我的主要疼痛区域。 如何启用JPA存储库类autowire enabled?我将能够显式地注册除JPA存储库之外的每个类作为其接口。 关于这个话题的任何帮助都会非常有用。提前谢谢。