提问人:Scripta14 提问时间:5/2/2019 最后编辑:Scripta14 更新时间:5/4/2019 访问量:4375
使用命令行参数设置 application.properties
Setting application.properties with command line arguments
问:
我正在尝试设置文件application.properties从命令行传递参数。我不是 spring boot 的专家,我读过一些关于这方面的帖子和文章,但没有什么用的。
我正在从 STS 运行配置中传递参数。我将两个参数传递给应用程序: --spring.datasource.url = jdbc:oracle:thin:@SERVERNAME:PORT:DB11G --spring.datasource.username = DBUSERNAME
@SpringBootApplication(scanBasePackages={"io.swagger.client","com.ids.app.controller","com.ids.app.service"})
@ConfigurationProperties("application.properties")
public class IdsFeApplication implements CommandLineRunner{
private static final String FEC_CODEX = "A";
@Autowired
private static ConfigInfoDB infoDb;
@Autowired
private Login fec;
public static void main(String[] args) {
SpringApplication.run(IdsFeApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
infoDb.dbInfo();
fec.token(FEC_CODEX);
}
}
@Controller
@PropertySource(value = { "classpath:application.properties" })
public class ConfigInfoDB {
@Value(value = "${spring.datasource.url}")
private String dbConn;
@Value(value = "${spring.datasource.username}")
private String dbUser;
public void dbInfo() {
System.out.println("dbConn " +dbConn);
System.out.println(" dbUser "+dbUser);
}
}
这是我的application.properties
spring.datasource.url = Anonymous
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver
spring.datasource.username = Anonymous
我希望使用从命令行传递的 url 和 username 参数设置 application.properties,并使用这些参数连接到数据库。如果我在application.properties中使用静态参数,我的应用程序运行良好。
@SpringBootApplication(scanBasePackages={"io.swagger.client","com.ids.app.controller","com.ids.app.service"})
public class IdsFeApplication implements ApplicationRunner{
private static final String FEC_CODEX = "A";
@Autowired
private static ConfigInfoDB infoDb;
@Autowired
private Login fec;
public static void main(String... args) throws Exception {
SpringApplication.run(IdsFeApplication.class, args);
}
@Override
public void run(ApplicationArguments args) throws Exception {
fec.token(FEC_CODEX);
}
@Controller
public class ConfigInfoDB {
@Value(value = "${spring.datasource.url}")
private String dbConn;
@Value(value = "${spring.datasource.username}")
private String dbUser;
public void dbInfo() {
System.out.println("dbConn " +dbConn);
System.out.println(" dbUser "+dbUser);
}
}
答:
0赞
flaxel
5/3/2019
#1
我测试了代码,它对我有用,所以我将发布我的代码片段。
这是我的属性文件:
person.name=anonymous
现在主类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
控制器如下所示:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Value("${person.name}")
private String name;
@GetMapping
public String hello() {
return "Hello, " + name + "!";
}
}
如果您构建应用程序,则可以使用以下命令执行 jar 存档:mvn clean install
java -jar demo-0.0.1-SNAPSHOT.jar --person.name=flaxel
最后,您可以浏览到以下 URL:http://localhost:8080/
评论
0赞
Scripta14
5/6/2019
我做了相同的示例,并得到了相同的结果,但是当我从命令行传递地址 url 时,应用程序不会连接到数据库。在application.properties中,我写道:''' spring.datasource.url = Anonymous'''。
评论