debug
开启debug开关可以查看更多的信息
java -jar myproject-0.0.1-SNAPSHOT.jar –debug
或者
在application.yml 中
debug: true
banner
banner.txt在classpath下增加这个文件,可以替换掉启动Spring的 图案。
配置文件就是 环境变量。
在程序启动时 执行一些方法
实现 ApplicationRunner or CommandLineRunner 接口。
@Component
public class MyBean2 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(args);
}
}
or
@Component
public class MyBean implements CommandLineRunner {
public void run(String... args) {
// Do something...
System.out.println("hello");
System.out.println(args);
}
}
修改程序退出的 返回值
@SpringBootApplication
public class ExitCodeApplication {
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return () -> 42;
}
public static void main(String[] args) {
System.exit(SpringApplication
.exit(SpringApplication.run(ExitCodeApplication.class, args)));
}
}
Spring boot 配置参数的 加载顺序
- Devtools global settings properties on your home directory
(~/.spring-boot-devtools.properties when devtools is active). @TestPropertySource annotations on your tests.
@SpringBootTest#properties annotation attribute on your tests.
Command line arguments.
- Properties from SPRING_APPLICATION_JSON
(inline JSON embedded in an environment variable or system - ServletConfig init parameters.
- ServletContext init parameters.
- JNDI attributes from java:comp/env.
- Java System properties (System.getProperties()).
- OS environment variables.
- A RandomValuePropertySource that only has properties in random.*.
Profile-specific application properties outside of your packaged jar
(application-{profile}.properties and YAML variants).Profile-specific application properties packaged inside your jar
(application-{profile}.properties and YAML variants).- Application properties outside of your packaged jar (application.properties and YAML variants).
- Application properties packaged inside your jar
(application.properties and YAML variants). - @PropertySource
annotations on your @Configuration classes. - Default properties
(specified using SpringApplication.setDefaultProperties).
配置随机值
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}
配置 SpringApplication
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MySpringConfiguration.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
配置文件
默认会从 application.properties 这个文件中读取配置
这个文件放在
- A /config subdirectory of the current directory.
- The current directory
- A classpath /config package
- The classpath root
这几个位置都可以。
类型安全的 配置 ConfigurationProperties
@Value(“${property}”) 可能会造成类型的不安全, 所以提供了
ConfigurationProperties
@ConfigurationProperties("foo")
public class FooProperties {
private boolean enabled;
private InetAddress remoteAddress;
private final Security security = new Security();
public boolean isEnabled() { ... }
public void setEnabled(boolean enabled) { ... }
public InetAddress getRemoteAddress() { ... }
public void setRemoteAddress(InetAddress remoteAddress) { ... }
public Security getSecurity() { ... }
public static class Security {
private String username;
private String password;
private List<String> roles = new ArrayList<>(Collections.singleton("USER"));
public String getUsername() { ... }
public void setUsername(String username) { ... }
public String getPassword() { ... }
public void setPassword(String password) { ... }
public List<String> getRoles() { ... }
public void setRoles(List<String> roles) { ... }
}
}
ConfigurationProperties 需要设置setter方法。
profile
spring.profiles.active=dev,hsqldb