我需要讀取UserDetailsDaoImpl中的屬性值。我正在使用Spring Security。Spring MVC在DAOImpl中讀取屬性文件null
它成功讀取@Controller
的內部,但不在此類中,可能是因爲它是@Repository
。
我該怎麼做才能讀取屬性值?
UserDetailsDaoImpl:
@Repository
public class UserDetailsDaoImpl extends JdbcDaoSupport implements UserDetailsDao {
@Value("${emails_blocked}")
private String emails_blocked;
豆類:
<context:property-placeholder location="classpath:config.properties"/>
編輯:
這是我如何調用UserDetailsDaoImpl:
@Autowired
UserDetailsDao userDetailsDao;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
try {
Authentication auth = super.authenticate(authentication);
// if reach here, means login success, else exception will be thrown
// reset the user_attempts
userDetailsDao.resetFailAttempts(authentication.getName());
return auth;
} catch (BadCredentialsException e) {
userDetailsDao.updateFailAttempts(authentication.getName());
throw e;
}
我的豆子更新:
<beans:bean id="userDetailsDao" class="com.setelog.spring.dao.UserDetailsDaoImpl" >
<beans:property name="dataSource" ref="dataSource" />
</beans:bean>
<beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<beans:bean id="authenticationProvider"
class="com.setelog.spring.handler.LimitLoginAuthenticationProvider">
<beans:property name="userDetailsService" ref="customUserDetailsService" />
<beans:property name="userDetailsDao" ref="userDetailsDao" />
<beans:property name="passwordEncoder" ref="encoder" />
</beans:bean>
確保你沒有自己創建一個新的實例,你也有一個在<@ Repository>所在的上下文中的'如果不是什麼都將被替換。 –
@ M.Deinum你能給我舉個例子嗎?我不明白。謝謝 – Kunal
你不明白什麼?檢查yu使用這個控制器的地方,你不是自己創建一個新的實例,並且確保你已經在應用上下文中配置了佔位符,這個存儲庫被定義/加載進去了。 –