Spring boot @Value 为空

在我们开始之前,是的,我知道还有另一个问题,但它们不是同一个问题,我找不到任何可以解决此问题的方法。


好吧,我有


package a

imports ...

@SpringBootApplication

public class LauncherApplication implements CommandLineRunner {


  @Autowired

  private SubListener subListener;


  @Value("${proj.id}")

  private String testy;


  public static void main(String[] args) {

    SpringApplication.run(LauncherApplication.class, args);


}



@Override

public void run(String... args) throws Exception {

    System.out.println(subListener.getProjID());

    System.out.println(testy);

  }

}

然后在我的子监听器上


package a.b

imports ...

@Component

public class SubListener {


  @Value("${proj.id}")

  private String projID;


  public String getProjID() {

    return projID;

  }

}

最后在 application.properties 上的资源文件夹中


proj.id=Hello from file

现在,所有帐户都应该工作,SpringBootApplication 具有组件扫描的东西,bean 被标记为 @component 并且是 springbootapplication 的子包,属性文件具有默认名称并位于默认目录中。我找不到一个不工作的原因。还请注意,当我在 testy 上调用该属性时,它仅在从子侦听器返回时才返回 null。


守着星空守着你
浏览 219回答 1
1回答

繁花不似锦

我唯一的猜测是 SubListener 类中的 @Value 注释来自错误的包。您能否检查一下您使用的是此导入而不是其他导入:import org.springframework.beans.factory.annotation.Value;我已经复制了你的代码,它对我有用。如果您仍然无法使其正常工作,那么我建议您尝试在一个新的空项目中重现它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java