2015-05-18 2 views
3

Я использовал весеннюю загрузку, чтобы сделать образец сервиса. Он отлично работает, когда я запускаю его с помощью команды «java -jar DemoLibrary.war» в командной строке. Я получаю правильное сообщение о том, что «приложение библиотеки запущено».Смена весеннего приложения Начальное сообщение

Мне понравилось ниже в файле Appplication.java;

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 

@Override 
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    return application.sources(Application.class); 
} 

public static void main(String[] args) { 
    ApplicationContext context = SpringApplication.run(Application.class, args); 
    LogService.info(Application.class.getName(), "Library Application Has Started."); 
} 
    } 

Когда я запускаю его во внешнем коте, он начинается нормально и работает отлично. Но я не вижу того же сообщения, что и больше не использует этот основной метод. Я просто вижу сообщение о запуске приложения Spring.

Есть ли способ, которым я могу изменить это сообщение и дать, как я хочу?

+0

выполняет '' CommandLineRunner'' работу при выполнении в среде tomcat? – Zarathustra

+0

Нет, это не так. Поскольку я задал путь в log4j.xml, например, . Поэтому я думаю, что все записано в этом файле. – Raj

+0

Вы должны добавить 'ApplicationListener' и прослушать' ContextRefreshedEvent'. Это должно работать независимо от окружающей среды. –

ответ

1

Вы можете использовать onStartup, что-то вроде:

@Override 
public void onStartup(final ServletContext servletContext) throws ServletException { 
    LogService.info(Application.class.getName(), "Library Application Has Started."); 
    super.onStartup(servletContext); 
} 
+0

Я добавил это в файл Application.java. Теперь это больше не начинается. Просто показывает это сообщение. – Raj

+0

Извините, я не знаю много весной. Я просто вижу примеры и следую, чтобы учиться. – Raj

+0

Извините, я забыл называть 'super', см. Мое редактирование –

5

Добавить ApplicationListener<ContextRefreshedEvent> набранный класс и зарегистрировать его в качестве @Bean.

Нечто подобное должно работать в обеих ситуациях без дублирования кода (хотя код не является сложным, но все же).

+0

Это потрясающе. Не знал этого. Спасибо. Мне жаль, что я не могу выбрать как ответ, но, к сожалению, я могу только принять его. – Raj

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