Вход в базу пользовательских данных для приложения весенней загрузки - PullRequest
0 голосов
/ 11 июня 2019

Я создаю весеннее загрузочное приложение Java, и у меня есть требование войти (info logs) в определенную таблицу базы данных.Для этого я создал собственный класс appender, расширяющий класс AppenderBase.теперь проблема заключается в том, что в моем пользовательском классе appender я хочу создать / получить доступ к объекту jdbctemplate, используя свойства базы данных, предоставленные в файле application.properties источника.

Как я могу получить доступ к объекту jdbctemplate Spring в моем пользовательском приложении?

Вот пример кода -

public class MyDBAppender extends AppenderBase<ILoggingEvent> {

    private JdbcTemplate jdbcTemplate;

    @Override
     protected void append(ILoggingEvent eventObject) {
       jdbcTemplate.savelog(....);
   } 
}

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете сделать Spring Bean-компонент вашего MyDBAppender, добавив аннотацию @Component на уровне класса.

Или, если вы не хотите этого делать или если это не работает, вы можете создатьвспомогательный класс для доступа к ApplicationContext:

@Component
public class ApplicationContextProvider implements ApplicationContextAware {

    private static ApplicationContext context;

    public static <T> T getBean(Class<T> beanType) {
        return context.getBean(beanType);
    }

    @Override
    public void setApplicationContext(ApplicationContext ac) throws BeansException {
        context = ac;
    }

}

Для доступа к JdbcTemplate используется вот так:

JdbcTemplate jdbcTemplate = ApplicationContextProvider.getBean(JdbcTemplate.class);
...