当前位置: 首页 > 知识库问答 >
问题:

被@componenet注释的类不能有非自动连接字段[重复]

鲍建业
2023-03-14

我想创建bean,但它告诉我不要有类型字符串或其他类型的字段,它们的类定义不包括@Component. ex。

@Component
public class MyDependancy {
  private String name;
  MyDependancy(){}
  MyDependancy(String name){this.name = name }
  // setter and getter of name field

}

它显示编译器错误:无法自动连线。未找到“String”类型的bean。当我在声明名称字符串之前添加@Autowired时,会给出相同的编译器错误。

共有2个答案

华心思
2023-03-14

它应该在Spring的最新版本中工作,因为这种行为在文档中提到如下:

类似地,如果一个类声明了多个构造函数,但没有一个用@autowmed注释,那么将使用主/默认构造函数(如果存在)。

正如您的示例所示,您确实定义了一个默认构造函数,因此应该使用它来创建mydependencybean。

所以我相信你使用的是旧版本的Spring,很可能是4.3之前的版本?

呼延俊风
2023-03-14

您需要在配置中显式地创建bean。您不需要在类中进行任何自动关联:

public class MyDependancy {
  private String name;
  MyDependancy(){}
  MyDependancy(String name){this.name = name }
  // setter and getter of name field

}

@配置类中:

@Bean
public MyDependancy myDependancy() {
  return new MyDependancy("Hello");
}

然后,从您可以调用的任何位置(例如,请使用setter\c'tor autowiring):

@Autowired
private MyDependancy myDependancy;

您还可以通过其他方式注入name属性。

 类似资料:
  • 我的类使用@service,而bean已经自动连线,所以我不明白为什么会出现这个错误。

  • 有一个JUnit测试如下: 内存编译器编译一个字符串到类on.the.fly.报告,其中包含一些@autowmed声明的字段,如reportRepository等。 一切正常,动态类报告可以使用自动连接字段来实现其功能。 当它放在MVC环境中时,使用应用程序上下文,即AnnotationConfigEmbeddedWebApplicationContext,属性值无法填充。 使用debug,met

  • 当我编写一些spring代码时,我使用了带有class和annotation-config的Spring4。我已经声明一个bean将接口实现为组件。我正在尝试制作另一个bean来依赖于它的接口时间。但它不起作用,因为spring抛出一个错误,在该名称中找不到bean。我想这可能是因为只靠和实体类的自动电线工作,但我不知道为什么它会这样设置?有人能解释为什么依赖注释不允许类型自动连接到接口吗? 简单

  • 这是我的当前设置:ProjectRepo: ProjectService: ProjectRestController:

  • 我正在查看工作区中的一些旧示例。我看不出自动连线是如何完成的,因为没有@Autowired。Spring Boot默认配置。 它工作得很好,但是如果没有自动配线,这些豆子是如何自动配线的呢?它们是自动作为字段还是在构造函数中?

  • 我试图执行一个集成测试,我的类与@Transactional注释不能自动连接到一个测试类与NoSuchBean定义异常。我把它注释出来,检查了一份装载豆子的列表,我的服务就在那里,只是没有注射。 组织。springframework。豆。工厂BeanCreationException:创建名为“com”的bean时出错。icsynergy。西姆。服务DBIntegrationServiceTest