1
我想添加一個Banner界面的實現,而不需要開發人員在每個應用程序中定製SpringApplication。有沒有其他的方式來獲得這個類的引用,因爲SpringBoot正在啓動,允許我注入自己的Banner實現?我知道banner.txt定製,並希望做更多。Spring Boot - 以編程方式自定義SpringApplication類的其他方法?
我想添加一個Banner界面的實現,而不需要開發人員在每個應用程序中定製SpringApplication。有沒有其他的方式來獲得這個類的引用,因爲SpringBoot正在啓動,允許我注入自己的Banner實現?我知道banner.txt定製,並希望做更多。Spring Boot - 以編程方式自定義SpringApplication類的其他方法?
您可以按照以下步驟設置你自己的旗幟實現:
創建一個橫幅實現:
class MySpringBootBanner implements Banner {
@Override
public void printBanner(Environment environment, Class<?> sourceClass,
PrintStream printStream) {
// Implement your banner
}
}
擴展SpringApplication
public class MySpringApplication extends SpringApplication {
private Banner banner;
public MySpringApplication(ResourceLoader resourceLoader, Object... sources) {
super(resourceLoader, sources);
super.setBanner(new MySpringBootBanner());
}
public MySpringApplication(Object... sources) {
super(sources);
super.setBanner(new MySpringBootBanner());
}
public void setBanner(Banner yourBanner) {
this.banner = yourBanner;
}
}
啓動應用程序:你所有的應用程序可以使用MySpringApplication
啓動春季啓動應用程序
MySpringApplication app = new MySpringApplication(Application.class);
app.run();
我部分地你的答案一致。問題是SpringApplication類有許多靜態「運行」方法,直接創建SpringApplication實例(忽略子類)。這就是我尋找另一種方法的原因。 – joshuawhite929 2015-03-04 02:12:26
無法覆蓋靜態行爲。既然你正在尋找自定義'SpringApplication'的行爲,你需要創建一個子類的實例。主要的要求是確保每個彈簧啓動應用程序不需要自定義。這種方法可以確保自定義在一個類中,其餘應用程序可以使用這個類。 – Mithun 2015-03-04 03:21:19