Загрузочный код Webapp в Tomcat - PullRequest
3 голосов
/ 21 сентября 2010

Я занимаюсь разработкой веб-приложения на Java с использованием Spring, Spring Security, Tomcat и MySQL. Прямо сейчас я все еще нахожусь в фазе, где я делаю довольно частые изменения в базе данных, а также воссоздаю базу данных для очистки тестовых данных. В конечном счете, это не будет проблемой, но есть ли способ создать экземпляр объекта или код, выполняемый для начальной загрузки веб-приложения? Я хотел бы иметь возможность использовать функциональные возможности IoC для использования того же самого, например, PasswordEncoder, который мое приложение использует для заполнения исходных учетных записей пользователей. Кроме того, я хотел бы, чтобы этот сценарий создавал базу данных, если она не существует и т. Д. Есть ли способ сделать это? Есть ли лучший способ, чем я предлагаю? Я не женат на алгоритме, который я только что описал, но это лучший способ передать то, что я ищу.

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 21 сентября 2010

Если вы используете Spring, вы можете зарегистрировать ContextLoaderListener , чтобы автоматически запустить ApplicationContext.Затем ApplicationContext может инициализировать базу данных, в идеале через JPA или Hibernate , но также с использованием простого jdbc

3 голосов
/ 21 сентября 2010

Хороший способ создать схему базы данных - liquibase .Вы также можете вставить данные.Liquibase предлагает интеграцию Spring через bean: liquibase.spring.SpringLiquibase, поэтому при необходимости база данных будет обновлена.

1 голос
/ 21 сентября 2010

вы можете реализовать компонент с интерфейсом ApplicationListener.

выполните необходимые действия при получении ContextRefreshedEvent

Преимущество этого подхода в том, что фреймворк загрузит для вас контекст и все ваши bean-компоненты, так что у вас есть доступ ко всем им для любой загрузки, которую вы хотите сделать.

недостатком является то, что это событие вызывается при инициализации и при обновлении

ContextRefreshedEvent Публикуется, когда ApplicationContext инициализируется или обновляется. Инициализированный здесь означает, что все bean-компоненты загружены, синглтоны предварительно созданы и ApplicationContext готов к использованию.

...