java – 如何在Spring中更改运行时的属性值

前端之家收集整理的这篇文章主要介绍了java – 如何在Spring中更改运行时的属性值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在运行时更改应用程序中的属性.
例如,我有一个服务,它发送一个带有resset密码的电子邮件.请求有效期为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;
}

我的春季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>

我可以在运行时以某种方式更改此值吗?

解决方法

刚刚从2017年的xml配置中脱离出来.
@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,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;
原文链接:https://www.f2er.com/java/121636.html

猜你在找的Java相关文章