问题描述
只需远离xml配置,就快要到2017年了。
@Service
public class PasswordResetRequestService {
@Value("${hours.expired:12}")
private int hoursExpiredPassword;
@Autowired
private PasswordResetRequestDao passwordResetRequestDao;
public void setHoursExpiredPassword(int hoursExpiredPassword) {
this.hoursExpiredPassword = hoursExpiredPassword;
}
@Override
public ERequests checkRequest(String number, Date date) {
PasswordResetRequest findedobject = passwordResetRequestDao.getobjectByElement(PasswordResetRequest.class, "requestId", number);
if (findedobject == null){
return ERequests.BAD_REQUEST;
}else{
long result = getDateDiff(findedobject.getRequestDate(),date,TimeUnit.HOURS);
if(result >= hoursExpiredPassword){
return ERequests.EXPIRED_REQUEST;
}
}
return ERequests.CORRECT_REQUEST;
}
}
使用@Value,您将从属性文件中获取hours.expired值,如果没有值,默认值为12。您还可以在运行时调用setHoursExpired并设置新值,并将该功能向管理员公开。
这对于一次操作很方便。如果您想让管理员永久更改密码的过期时间,我将在MysqL或您正在使用的任何数据库中保留hours.expired值。
编辑:回答完全有效的@matt备注。如果是这种情况,则不能选择使用Java confing。对于自定义行为,您只需将XML定义的bean自动连接到服务中,然后执行所需的任何逻辑即可。
@Autowired
private pl.lublin.zeto.zetoRA.services.servicesDAO.PasswordResetRequestService passwordResetRequestService;
解决方法
我需要在运行时在应用程序中更改属性。例如,我有一项服务,该服务发送带有重置密码的电子邮件。要求有效期为12小时。但是我想在运行时将此时间更改为24或更多。我需要给管理员执行此操作的机会。
我的财产文件有
hours.expired=12
我的服务
private int hoursExpiredPassword;
public void setHoursExpiredPassword(int hoursExpiredPassword) {
this.hoursExpiredPassword = hoursExpiredPassword;
}
@Override
public ERequests checkRequest(String number,Date date) {
PasswordResetRequest findedObject = passwordResetRequestDao.getObjectByElement(PasswordResetRequest.class,"requestId",number);
if (findedObject == null){
return ERequests.BAD_REQUEST;
}else{
long result = getDateDiff(findedObject.getRequestDate(),date,TimeUnit.HOURS);
if(result >= hoursExpiredPassword){
return ERequests.EXPIRED_REQUEST;
}
}
return ERequests.CORRECT_REQUEST;
}
我的Spring xml配置
<bean id="passwordResetRequestService" class="pl.lublin.example.services.servicesDAO.PasswordResetRequestService">
<property name="passwordResetRequestDao" ref="passwordResetRequestDao"></property>
<property name="hoursExpiredPassword" value="${hours.expired}"></property>
</bean>
我可以在运行时以某种方式更改此值吗?