我想创建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时,会给出相同的编译器错误。
它应该在Spring的最新版本中工作,因为这种行为在文档中提到如下:
类似地,如果一个类声明了多个构造函数,但没有一个用@autowmed注释,那么将使用主/默认构造函数(如果存在)。
正如您的示例所示,您确实定义了一个默认构造函数,因此应该使用它来创建mydependency
bean。
所以我相信你使用的是旧版本的Spring,很可能是4.3之前的版本?
您需要在配置中显式地创建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