2015-03-02 1 views
1

Я хотел бы добавить реализацию интерфейса Banner, не требуя от разработчиков настройки SpringApplication в каждом приложении. Есть ли другой способ получить ссылку на этот класс, когда запускается SpringBoot, что позволит мне внедрить мою собственную реализацию Banner? Я знаю настройку banner.txt и хотел бы сделать больше.Spring Boot - любые другие способы настройки класса SpringApplication программно?

ответ

1

Вы можете выполнить следующие шаги, чтобы установить собственную реализацию баннера:

Создать реализацию баннера:

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(); 
+0

Я частично согласен с ответом. Проблема состоит в том, что класс SpringApplication имеет множество статических методов «запуска», которые напрямую создают экземпляр SpringApplication (игнорируя ваш подкласс). Вот почему я искал другой подход. – joshuawhite929

+0

Невозможно переопределить статическое поведение. Поскольку вы хотите настроить поведение «SpringApplication», вам нужно создать экземпляр подкласса. Основное требование - убедиться, что каждое приложение загрузки весны не нуждается в настройке. Этот подход гарантирует, что настройка будет в одном классе, и остальные приложения могут использовать этот класс. – Mithun

Смежные вопросы