配置:
@Configuration
public class CoreConfig {
@Bean
public StatusService statusService(StatusPersistenceService statusPersistenceService) {
return new StatusEventHandler(statusPersistenceService);
}
}
类Spring抱怨没有默认构造函数
@Configuration
public class StatusEventHandler implements StatusService {
private final StatusPersistenceService statusPersistenceService;
@Autowired
public StatusEventHandler(final StatusPersistenceService statusPersistenceService) {
this.statusPersistenceService = statusPersistenceService;
}
}
注入此bean的控制器:
@Controller
@RequestMapping("/showStatus")
public class ShowStatusController {
@Autowired
private StatusService statusService;
}
这将编译并测试通过,但是当发布到应用程序服务器时,我收到以下错误。为什么 Spring 认为应该有一个默认的无参数构造函数?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'statusEventHandler'
...
No default constructor found;
您是否在StatusEventHandler中给出了@Component或@Service注释?请尝试这样做。
来自@Configuration
javadoc:
@Configuration是用@Component进行元注释的,因此@Configuration类是组件扫描的候选对象(通常使用Spring XML的元素),因此也可以在字段和方法级别利用@Autowired/@Inject(但不是在构造函数级别)。
@Component
或@Service
是更适合服务的注释,实际上它们的处理方式不同,但在这种情况下,您已经使用@Bean
声明了您的bean,因此您不需要使用@Component
,也不需要任何其他组件扫描注释(@Service、@Repository等),因为StatusService bean已经通过@Bean
注释方法定义。
正如Sotirios Delimanolis所指出的,Spring process @Bean注释的方法不应该包含参数
@Configuration
public class CoreConfig {
@Bean
public StatusPersistenceService statusPersistenceService(){
....
}
@Bean
public StatusService statusService() {
return new StatusEventHandler(statusPersistenceService());
}
}
看见http://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/context/annotation/Bean.html
Spring靴和jpa给出了错误 项目的github链接https://github.com/dishankgoyal/springsBoot/tree/master/faculty_project
因此,我有了类、、和。由于类有很多setter和getter,所以我决定将代码放在pastebin中: LogBookEntry 驱动程序 数据库 汽车 因此,正如您在数据库中所看到的,我有两个函数来加载和保存XML数据。 如您所见,类的日期不会保存到XML文件中。这就是为什么我在加载xml文件时会出现以下错误的原因: Okt 22,2017 3:36:33 PM com.sun.xml.inte
我想映射到一个源目标,它只有一个接受3个参数的构造函数。我得到以下错误: 无法实例化目标com的实例。诺瓦索尔。bookingflow。应用程序编程接口。实体。顺序速度确保com。诺瓦索尔。bookingflow。应用程序编程接口。实体。顺序速率具有非私有无参数构造函数。 当我在源目标中插入一个无参数构造函数时,它可以工作,但这可能会导致类的误用,所以我不希望这样。 我曾尝试使用转换器,但似乎不起
问题内容: 我正在尝试使用Jackson来向Json读/写我的POJO。截至目前,我已经为我的班级进行了配置和工作,但第3方班级除外。尝试读取Json时出现错误: 在Google进行几次快速搜索后,看来我的课程需要默认的构造函数或使用注释覆盖默认的构造函数。不幸的是,失败的类来自第3方库,该类没有默认的构造函数,我显然不能覆盖代码。 所以我的问题是,对此我能做些什么吗?还是我不走运? 谢谢。 问题
问题内容: 我最近在一个类中看到了这个构造函数: 没有其他构造函数。 是否有一个原因?Java自动创建一个默认的构造函数,那么为什么要显式声明一个呢?还是以与将大括号用于单语句if语句相同的方式视为一种好习惯- 如果以后添加其他构造函数而您忘记了没有默认值…? 问题答案: 有几点要点,不太可能是您在这种情况下看到它的原因。 它为您提供了设置断点的方法。 您可以将其设为非公开 至于“以防以后添加其他
我有一个自定义的参数解析器,它在Spring 3.0.7中工作,但在Spring 3.1.2中失败。下面显示堆栈跟踪和测试驱动程序代码。 当我查看堆栈跟踪时,似乎没有调用。相反,我在堆栈跟踪中看到。 建议? 最后...这里是Spring配置中的注释驱动标记