我正在使用 springboot 1.3.8,我在带参数的构造函数上有一个 @Autowired 但我收到错误:找不到默认构造函数...

@SpringBootApplication 
public class App implements CommandLineRunner { 
 
  private ApplicationContext context; 
  private CLIHelper cliHelper; 
 
  @Autowired 
  public App(ApplicationContext context, CLIHelper cliHelper) { 
    this.context = context; 
    this.cliHelper = cliHelper; 
  } 
 
  public static void main(String[] args) { 
     SpringApplication.run(App.class, args); 
  } 
} 

请您参考如下方法:

您的类使用 @SpringBootApplication 注释,这也是 @Configuration。并且 @Configuration 应该有一个默认的无参数构造函数。 来自 javadoc :

@Configuration classes must have a default/no-arg constructor and may not use @Autowired constructor parameters.

从 Spring 4.3 版本开始,您可以为 @Configuration 类注入(inject)构造函数。在 Spring Boot 版本 1.5.3 上测试,它工作正常。

Here是 Spring 4.3 的发行说明。这是您需要的功能:

@Configuration classes support constructor injection.


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!