如何通过终端将值传递给@componentscan?

nafvub8i  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(284)

我有一个用例,我只想在springboot应用程序中执行一些包。所以,在我的主要课堂上,我用的是这样的东西-

@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
public class Example {

  public static void main(String[] args) {
    SpringApplication.run(Example.class, args);
  }
}

因此,这里我将基本包硬编码为“com.example”。这不是我想要的。当应用程序通过命令行参数从终端运行时,我想接收包名。有没有一种方法可以将命令行参数传递给应用程序并使用我在basepackages中收到的参数?提前谢谢

von4xj4u

von4xj4u1#

您可以为此使用占位符:

@SpringBootApplication
@ComponentScan(basePackages="${scan.myPackage}")
public class Example {
  public static void main(String[] args) {
    SpringApplication.run(Example.class, args);
  }
}

在终端上,你可以做:

java -jar app.jar --scan.myPackage=com.example

您可能想了解个人资料。
编辑:
在SpringBoot2.x和maven 3.x及更高版本中,提供动态值的命令是:

java -jar -Dscan.myPackage=com.example app.jar

相关问题