Spring boot 方法calculationRunner中的参数0。。。需要类型为';的bean';那是找不到的

Spring boot 方法calculationRunner中的参数0。。。需要类型为';的bean';那是找不到的,spring-boot,java-11,Spring Boot,Java 11,环境: @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean public ApplicationRunner calculationRunner(Calculator calculator,

环境:

 @SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    @Bean
    public ApplicationRunner calculationRunner(Calculator calculator, 
            @Value("${lhs}") int lhs,
            @Value("${rhs}") int rhs, 
            @Value("${op}") char op) {
        return args -> calculator.calculate(lhs, rhs, op);
    }
}
public class Calculator {
    private final Collection<Operation> operations;

    public Calculator(Collection<Operation> operations) {
        this.operations = operations;
    }
    public void calculate(int lhs, int rhs, char op) {
        for (var operation : operations) {
            if (operation.handles(op)) {
                var result = operation.apply(lhs, rhs);
                System.out.printf("%d %s %d = %s%n", lhs, op, rhs, result);
                return;
            }
        }
        throw new IllegalArgumentException("Unknown operation " + op);
    }
}
public interface Operation {
    int apply(int lhs, int rhs);
    boolean handles(char op);
}
@Component
public class Addition implements Operation {
    @Override
    public int apply(int lhs, int rhs) {
        return lhs + rhs;
    }
    @Override
    public boolean handles(char op) {
        return '+' == op;
    }
}
 :: Spring Boot ::        (v2.1.3.RELEASE)

ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-03-11 15:16:13.709 ERROR 4652 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************
Description:    
Parameter 0 of method calculationRunner in com.example.demo.DemoApplication required a bean of type 'com.example.demo.Calculator' that could not be found.       
Action:
Consider defining a bean of type 'com.example.demo.Calculator' in your configuration.
jdk 11

弹簧靴2.1.3

代码:

 @SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    @Bean
    public ApplicationRunner calculationRunner(Calculator calculator, 
            @Value("${lhs}") int lhs,
            @Value("${rhs}") int rhs, 
            @Value("${op}") char op) {
        return args -> calculator.calculate(lhs, rhs, op);
    }
}
public class Calculator {
    private final Collection<Operation> operations;

    public Calculator(Collection<Operation> operations) {
        this.operations = operations;
    }
    public void calculate(int lhs, int rhs, char op) {
        for (var operation : operations) {
            if (operation.handles(op)) {
                var result = operation.apply(lhs, rhs);
                System.out.printf("%d %s %d = %s%n", lhs, op, rhs, result);
                return;
            }
        }
        throw new IllegalArgumentException("Unknown operation " + op);
    }
}
public interface Operation {
    int apply(int lhs, int rhs);
    boolean handles(char op);
}
@Component
public class Addition implements Operation {
    @Override
    public int apply(int lhs, int rhs) {
        return lhs + rhs;
    }
    @Override
    public boolean handles(char op) {
        return '+' == op;
    }
}
 :: Spring Boot ::        (v2.1.3.RELEASE)

ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-03-11 15:16:13.709 ERROR 4652 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************
Description:    
Parameter 0 of method calculationRunner in com.example.demo.DemoApplication required a bean of type 'com.example.demo.Calculator' that could not be found.       
Action:
Consider defining a bean of type 'com.example.demo.Calculator' in your configuration.
结构

我在Externalize属性上研究Spring boot,请参见问题。我知道怎么处理它


我希望您能帮助我解决这个问题,非常感谢。

您的
calculationRunner
方法需要一个
Calculator
类型的bean作为第一个参数。但是您的
公共类计算器
不是有效的Springbean。考虑从<代码>计算器Runs< /Cord>方法签名中删除<代码>计算器< /代码>,并在方法的主体中构造对象。或者将
Calculator
单独定义为Springbean(即添加
@Service
或类似的注释)。

您的
calculationRunner
方法需要
Calculator
类型的bean作为第一个参数。但是您的
公共类计算器
不是有效的Springbean。考虑从<代码>计算器Runs< /Cord>方法签名中删除<代码>计算器< /代码>,并在方法的主体中构造对象。或者将
Calculator
单独定义为Springbean(即添加
@Service
或类似注释)。

我使用maven构建jar,但maven2不支持jdk11我使用maven构建jar,但maven2不支持jdk11