Uzyskiwanie dostępu do komponentu Spring Bean z rejestrowania klasy aplikacji
Mam klasę log4j DailyRollingFileAppender, w której metoda setFile () muszę sprawdzić wartość bazy danych, aby zdecydować, który plik ma być używany do logowania.
DailyRollingFileAppender class
public void setFileName()
{
isLoginEnabled = authenticationManager.checkLoginLogging();
}
Tutaj „authenticationManager” jest obiektem klasy używanym do wywoływania wywołań bazy danych przy użyciu funkcji wtrysku zależności sprężynowych.
spring-beans.xml
<bean id="dailyRollingFileAppender" class="com.common.util.DailyRollingFileAppender">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
</bean>
<bean id="authenticationManager" class="com.security.impl.AuthenticationManagerImpl">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>
Teraz, kiedy zaczynam, aplikacja log4j zostaje zainicjowana jako pierwsza, a ponieważ Spring-bean jeszcze nie wywołał, zgłasza NullPointerException w metodzie setFileName (). Czy istnieje sposób, w jaki mogę wywołać wywołanie 'authenticationManager.checkLoginLogging ();' z klasy DailyFileAppender, tak że gdy log4j się ładuje, powinien uzyskać wartość bazy danych?