创建名为’application’的bean时出错,找不到默认构造函数;嵌套
发布时间:2020-12-15 04:35:58 所属栏目:Java 来源:网络整理
导读:我不太明白为什么这段代码给我“找不到默认构造函数”错误.构造函数是@Autowired.一切似乎都正确注入.有人可以帮忙吗?谢谢 @SpringBootApplicationpublic class Application { private ApplicationContext applicationContext; private MessagingService me
我不太明白为什么这段代码给我“找不到默认构造函数”错误.构造函数是@Autowired.一切似乎都正确注入.有人可以帮忙吗?谢谢
@SpringBootApplication public class Application { private ApplicationContext applicationContext; private MessagingService messagingService; private Parser parser; private static final Logger log = LoggerFactory.getLogger(Application.class); @Autowired public Application(ApplicationContext applicationContext,MessagingService messagingService,Parser parser) { this.applicationContext = applicationContext; Assert.notNull(messagingService,"MessagingService must not be null"); this.messagingService = messagingService; Assert.notNull(parser,"Parser must not be null"); this.parser = parser; } public static void main (String[] args) { SpringApplication.run(Application.class,args); } @Bean public CommandLineRunner app() { return args -> { Locale defaultLocale = Locale.getDefault(); Locale.setDefault(defaultLocale); log.info("Using MessagingService: " + messagingService.getMyMessageCode()); parser.parse(); }; } } 编辑:更新的Application.class @SpringBootApplication public class Application { @Autowired private MessagingService messagingService; @Autowired private Parser parser; private static final Logger log = LoggerFactory.getLogger(Application.class); public Application() {} public static void main (String[] args) { SpringApplication.run(Application.class,args); } @Bean public CommandLineRunner app() { return args -> { Locale defaultLocale = Locale.getDefault(); Locale.setDefault(defaultLocale); log.info("Using MessagingService: " + messagingService.getMyMessageCode()); parser.parse(); }; } } 解决方法
你不能自动装入主Spring Boot类.您可以将CommandLineRunner所需的依赖项注入作为使用@Bean注释的方法的参数,当然还要删除主类的构造函数注入:
@SpringBootApplication public class Application { private static final Logger log = LoggerFactory.getLogger(Application.class); public static void main (String[] args) { SpringApplication.run(Application.class,args); } @Bean public CommandLineRunner app(ApplicationContext applicationContext,Parser parser) { return args -> { Locale defaultLocale = Locale.getDefault(); Locale.setDefault(defaultLocale); log.info("Using MessagingService: " + messagingService.getMyMessageCode()); parser.parse(); }; } } 编辑: @SpringBootApplication public class Application { private static final Logger log = LoggerFactory.getLogger(Application.class); public Application() {} public static void main (String[] args) { SpringApplication.run(Application.class,args); } @Bean public CommandLineRunner app(MessagingService messagingService,Parser parser) { return args -> { Locale defaultLocale = Locale.getDefault(); Locale.setDefault(defaultLocale); log.info("Using MessagingService: " + messagingService.getMyMessageCode()); parser.parse(); }; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |