找不到类型为的java.util.Date bean
Spring启动应用程序在运行时失败,出现以下错误:找不到类型为的java.util.Date bean,java,spring,Java,Spring,Spring启动应用程序在运行时失败,出现以下错误: *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in com.bla.Application.Domain.SomeJavaClass required a bean of type 'java.util.Date' that could no
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.bla.Application.Domain.SomeJavaClass required a bean of type 'java.util.Date' that could not be found.
Action:
Consider defining a bean of type 'java.util.Date' in your configuration.
我正在使用:
openjdk版本“1.8.0_222” OpenJDK运行时环境(构建1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10)
OpenJDK 64位服务器虚拟机(构建25.222-b10,混合模式)
我完全重新安装了Java,错误仍然是一样的。。。 问题类: 问题类位于域模型中:
package com.vip.SmartScheduler.Domain;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Component;
import com.vip.SmartScheduler.Enum.PeriodUnit;
@Component
public class PeriodContainer {
private Date periodBeginTimestamp;
private List<UserStats> agentsWithStatistics;
private PeriodUnit periodUnit;
public PeriodContainer(Date periodBeginTimestamp, List<UserStats> agents, PeriodUnit periodUnit){
this.periodBeginTimestamp = periodBeginTimestamp;
this.agentsWithStatistics = agents;
this.periodUnit = periodUnit;
}
public Date getPeriodBeginTimestamp() {
return periodBeginTimestamp;
}
public void setPeriodBeginTimestamp(Date periodBeginTimestamp) {
this.periodBeginTimestamp = periodBeginTimestamp;
}
public List<UserStats> getAgentsWithStatistics() {
return agentsWithStatistics;
}
public void setAgentsWithStatistics(List<UserStats> agents) {
this.agentsWithStatistics = agents;
}
public PeriodUnit getPeriodUnit() {
return periodUnit;
}
public void setPeriodUnit(PeriodUnit periodUnit) {
this.periodUnit = periodUnit;
}
}
package com.vip.SmartScheduler.Domain;
导入java.util.Date;
导入java.util.List;
导入org.springframework.stereotype.Component;
导入com.vip.SmartScheduler.Enum.PeriodUnit;
@组成部分
公共类容器{
私人日期周期BeginTimeStamp;
具有统计功能的私人列表代理;
私人定期股;
公共PeriodContainer(日期periodBeginTimestamp、列表代理、PeriodUnit){
this.periodBeginTimestamp=periodBeginTimestamp;
this.agentsWithStatistics=代理;
this.periodUnit=periodUnit;
}
公共日期getPeriodBeginTimestamp(){
返回周期begintimestamp;
}
公共无效设置periodBeginTimestamp(日期periodBeginTimestamp){
this.periodBeginTimestamp=periodBeginTimestamp;
}
公共列表getAgentsWithStatistics(){
退货代理与统计;
}
公共无效设置代理和统计(列出代理){
this.agentsWithStatistics=代理;
}
公共PeriodUnit getPeriodUnit(){
返回周期单元;
}
公共void setPeriodUnit(PeriodUnit){
this.periodUnit=periodUnit;
}
}
看起来您可能没有创建java.Util.date
bean。如果是这样的话,请按照正确的步骤注入datebean而不出错。如果不是这样,请添加bean配置文件(或maven pom.xmlm或等效文件)以帮助理解问题。问题是,您的类有其构造函数的参数,但没有为参数定义bean
你可以做几件事:
定义你的bean
@Configuration
public class MyBeans {
@Bean
public Date periodBeginTimestamp() {
return new Date();
}
@Bean
public List<UserStats> agents() {
return new ArrayList<UserStats>();
}
@Bean
public PeriodUnit periodUnit() {
return new PeriodUnit();
}
}
@配置
公共类MyBeans{
@豆子
公开日期周期BeginTimeStamp(){
返回新日期();
}
@豆子
公开名单代理人(){
返回新的ArrayList();
}
@豆子
公共时段单位{
返回新的PeriodUnit();
}
}
这将创建必要的bean以注入到参数中,但不确定这是否会为您提供要填充值的控件
零参数构造函数
另一种方法是创建一个零参数构造函数,然后使用一个方法来设置所需内容:
@Component
public class PeriodContainer {
private Date periodBeginTimestamp;
private List<UserStats> agentsWithStatistics;
private PeriodUnit periodUnit;
public PeriodContainer(){}
public void setValues(Date periodBeginTimestamp, List<UserStats> agents, PeriodUnit periodUnit){
this.periodBeginTimestamp = periodBeginTimestamp;
this.agentsWithStatistics = agents;
this.periodUnit = periodUnit;
}
...
}
@组件
公共类容器{
私人日期周期BeginTimeStamp;
具有统计功能的私人列表代理;
私人定期股;
公共容器(){}
公共void设置值(日期周期BeginTimeStamp、列表代理、周期单位){
this.periodBeginTimestamp=periodBeginTimestamp;
this.agentsWithStatistics=代理;
this.periodUnit=periodUnit;
}
...
}
那么你是否需要它:
@Service
public class MyClass {
@Autowire
private PeriodContainer container;
@PostConstruct
private void init() {
Date periodBeginTimestamp = getTimeStamp();
List<UserStats> agents = getUserStatsList();
PeriodUnit periodUnit = getPeriodUnit();
container.setValues(periodBeginTimestamp, agents, periodUnit);
}
}
@服务
公共类MyClass{
@自动连线
私人集装箱;
@施工后
私有void init(){
日期周期BeginTimeStamp=getTimeStamp();
列表代理=getUserStatsList();
PeriodUnit=getPeriodUnit();
容器设置值(periodBeginTimestamp、代理、periodUnit);
}
}
显示这个类Application.Domain.SomeJavaClass
你的代码在哪里?如果没有令人不快的问题的代码示例,很难说发生了什么。@rocus2k-我认为问题不在代码本身。我认为这是java配置的一个问题。代码在其他计算机上成功编译。