public class SampleListener implements ApplicationListener<ApplicationStartingEvent> {
@Override
public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) {
System.out.println("==========================");
System.out.println("Application is Starting...");
System.out.println("==========================");
}
}
SampleListener.java
But, ApplicationStartingEvent는 ApplicationContext가 만들어지기 전에 발생하기 때문에
빈에 넣어준다고 하더라도 실행되지 않는다.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.addListeners(new SampleListener());
app.run(args);
}
}
Application.java
메인에서 app.addListeners(new SampleListener()); 로 직접 만들어 주어야 한다.
2. ApplicationContext가 만들어진 후에 발생하는 이벤트들은 @Component 로 빈에 등록하여 실행시켜주면 된다.
@Component
public class SampleListener implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {
System.out.println("==========================");
System.out.println("Application is Started...");
System.out.println("==========================");
}
}
SampleListener.java
- ApplicationStartedEvent는 ApplicationContext가 만들어진 후에 발생한다.
3. app.setWebApplicationType();
에는 WebApplicationType.NONE, WebApplicationType.SERVLET, WebApplicationType.REACTIVE가 있다.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
-> 이렇게 쓰는 것보다
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.run(args);
}
}
-> manifest 파일을 만들어줌 -> java -jar target/spring-application-0.0.1-SNAPSHOT.jar
5. 코딩으로 배너 구현
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.setBanner(new Banner() {
@Override
public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
out.println("--------------------------");
out.println("실행시이이이이작");
out.println("--------------------------");
}
});
app.run(args);
}
}
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(Application.class)
.banner(new Banner() {
@Override
public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
out.println("++++++++++++++++++++++");
out.println("++++++++++++++++++++++");
out.println("++++++++++++++++++++++");
}
})
.run(args);
}
}
But, banner.txt 파일과 코딩 둘 다 있다면 banner.txt 파일이 이김
6. 코딩으로 배너 끄기
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}