SpringApplication
系统默认
SpringApplication.run(DemoApplication.class, args);
启动前添加定义
SpringApplication app = new SpringApplication(DemoApplication .class);
app.setBannerMode(Banner.Mode.CONSOLE);
app.run(args);
new SpringApplicationBuilder(DemoApplication.class).properties("spring.config.location=classpath:application.yml").run(args);
// 或者:
AnsiOutput.setEnabled(AnsiOutput.Enabled.ALWAYS);
new SpringApplicationBuilder(DemoApplication.class)
.main(SpringVersion.class) // 这个是为了可以加载 Spring 版本
.bannerMode(Banner.Mode.CONSOLE) // 控制台打印
.run(args);
// 又或者:(构建ApplicationContext层次结构(具有父/子关系的多个上下文)一般不用)
new SpringApplicationBuilder()
.sources(Parent.class)
.child(Application.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
限制:Web组件必须包含在子上下文中,并且Environment父组件和子上下文都使用相同的组件。
实现ApplicationRunner或CommandLineRunner接口
run方法,该方法在SpringApplication.run(…)完成之前调用
import org.springframework.boot.*;
import org.springframework.stereotype.*;
@Component
public class MyBean implements CommandLineRunner {
public void run(String... args) {
// Do something...
}
}
实现Application Exit
@SpringBootApplication
public class DemoApplication {
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return () -> 42;// 安全退出并返回code 42
}
public static void main(String[] args) {
System.exit(SpringApplication
.exit(SpringApplication.run(DemoApplication.class, args)));
}
}
Banner接口
文件定义横幅
在resources下定义banner.txt文件:
${AnsiColor.BRIGHT_GREEN}
.__ .__ ____.________
| | |__|__ __ ____ | |\_____ \
| | | \ \/ // __ \ | | / / \ \
| |_| |\ /\ ___//\__| |/ \_/. \
|____/__| \_/ \___ >________|\_____\ \_/
\/ \__>
Spring Boot Version : ${spring-boot.formatted-version}
变量 | 描述 |
---|---|
| 应用程序的版本号,如声明中所声明的 |
| 应用程序的版本号,在声明中声明 |
| 您正在使用的Spring Boot版本。例如 |
| 您正在使用的Spring Boot版本,格式化显示(用括号括起来并带有前缀 |
|
|
| 申请的标题,如声明中所述 |
程序定义横幅
SpringApplication app = new SpringApplication(DemoApplication .class);
app.setBannerMode(Banner.Mode.CONSOLE);
app.setBanner(new Banner() {
@Override
public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
System.out.println("定义的ansi图案");
}
});
app.run(args);
不输出横幅
spring:
main:
banner-mode: "off"
等价于:
SpringApplication app = new SpringApplication(DemoApplication .class);
app.setBannerMode(Banner.Mode.OFF);
通过组件@Component中的name属性外部化配置
import org.springframework.stereotype.*;
import org.springframework.beans.factory.annotation.*;
@Component
public class MyBean {
@Value("${name}")
private String name;
// ...
}
在应用程序类路径上(例如,在jar中),您可以拥有一个 application.properties为其提供合理的默认属性值的文件name。在新环境中运行时,application.properties可以在jar外部提供一个覆盖该文件的文件name。对于一次性测试,您可以使用特定的命令行开关启动(例如,java -jar app.jar --name="Spring")。
评论区