Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到类型为的java.util.Date bean_Java_Spring - Fatal编程技术网

找不到类型为的java.util.Date bean

找不到类型为的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

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 not be found.

Action:

Consider defining a bean of type 'java.util.Date' in your configuration.
我正在使用:

  • 弹簧靴(v1.5.8.版本)
  • sts4ide
  • 爪哇8
  • Linux Ubuntu 18
  • user@host:~$java-版本
    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配置的一个问题。代码在其他计算机上成功编译。