Java 使用autowired时无法在Spring引导中创建Bean

Java 使用autowired时无法在Spring引导中创建Bean,java,spring-boot,autowired,spring-bean,Java,Spring Boot,Autowired,Spring Bean,我有一个AppController类,其中我将PluginManager自动连接为: PluginManager bean配置为: @Configuration public class AppConfig { @Bean public PluginManager pluginManager(@Value("${application.service.defs}") String pattern) { return new PluginManager(patte

我有一个AppController类,其中我将PluginManager自动连接为:

PluginManager bean配置为:

@Configuration
public class AppConfig {

    @Bean
    public PluginManager pluginManager(@Value("${application.service.defs}") String pattern) {
        return new PluginManager(pattern);
    }
}
${application.service.defs}是我在application.yml文件中得到的字符串

PluginManager对象为:

public class PluginManager {

    private final List<String> serviceDefPatterns = new ArrayList<>();
    public PluginManager(String serviceDefPattern) {
        this.serviceDefPatterns.addAll(Arrays.asList(serviceDefPattern.split(",")));
    }
}
当我使用命令mvn spring boot:run运行时,出现了问题。但是,当我使用IntelliJ IDE运行应用程序时,一切正常,问题消失。


任何帮助都将不胜感激。谢谢。

pattern
显然为空,因此NPE可能缺少某些“属性定义”(即
@值的来源),请尝试启用自动扫描配置。@RC:我使用注释值将值分配到pattern字段,该值来自application.yml文件我复制了您的代码,似乎无法复制该问题。它在IntelliJ和mvn spring boot:run上都运行得很好。你的application.yml在哪里?里面有什么?另外,您是否包含了类似于
snakeyaml
的内容,以便正确处理您的application.yml?那么,如何说呢,我的完整源代码很长,这就是为什么我没有在这里附加完整代码的原因。然而,我发现在Bean对象类(aka.PluginManager)中,如果我添加了一个字段,比如
private final servicebeavior
,然后在Bean构造函数中初始化了这个对象,那么错误就会立即发生。当我创建和配置Bean时,可能是我的错误。无论如何,谢谢你的cmt。
public class PluginManager {

    private final List<String> serviceDefPatterns = new ArrayList<>();
    public PluginManager(String serviceDefPattern) {
        this.serviceDefPatterns.addAll(Arrays.asList(serviceDefPattern.split(",")));
    }
}
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appController' defined in file [D:\Workspace\wae-thesis\wae-thesis-application\targe
t\classes\wae\thesis\indiv\app\controller\AppController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.facto
ry.BeanCreationException: Error creating bean with name 'pluginManager' defined in class path resource [wae/thesis/indiv/app/config/AppConfig.class]: Bean instantiation via factory
method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [wae.thesis.indiv.core.plugins.PluginManager]: Factory method 'pluginM
anager' threw exception; nested exception is java.lang.NullPointerException
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193) ~[spring-beans-4.3.7.RELEAS
E.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095) ~[spring-beans-4.3.7.RELEASE
.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.7.RELEASE.jar:4.
3.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.7.RELEASE.jar:4.3.
7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]

        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.
RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~[spring-context-4.3.7.RELEASE.jar:4.3
.7.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
        at wae.thesis.indiv.app.Application.main(Application.java:13) [classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
        at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:527) [spring-boot-maven-plugin-1.5.2.RELEASE.jar:1.5.2.RELEASE]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]