首页 > java配置文件传值问题

java配置文件传值问题

1.为何${pay_order_risk_task.cron}值可以传到cron里,却不能传到execute参数里?

    <context:property-placeholder location="classpath:dbservice-datasource.properties,classpath:task-config.properties" system-properties-mode="OVERRIDE"/>
    @Scheduled(cron = "${pay_order_risk_task.cron}") // 每5秒执行一次
    public void run() throws Exception {
        super.execute("${pay_order_risk_task.cron}");
    }

2.有没更好的方法传值到execute的参数里,从配置文件里取,已知道的方法

public class XXX implements InitializingBean {
@Value("#{xxxx['xxx.xxx']}")
    private boolean xxx;
  @Override
    public void afterPropertiesSet() throws Exception {
        xxx();
    }

3.我想统一传参数的方式,最好能直接用${pay_order_risk_task.cron}搞定

求各位大神给点建议。


目前采用的spring配置文件注入

<bean id="taskConfigProperties"
        class="com.xxx..properties.TaskConfigProperties">
        <property name="payOrderRiskTaskParam" value="${pay_order_risk_task.param}" />
    </bean>

${pay_order_risk_task.param}貌似不支持直接在代码里用,但是可以在spring注入的时候替换变量


没注解当然不行了,写在properties里面的,可以直接读取这个properties文件获取值


不知道题主注意到@PathVariable这个注解没有,例如像下面这样的代码,

@Scheduled(cron = "${pay_order_risk_task.cron}")
@LikeRequestMapping("/crontab/{expression}")
public void run(@LikePathVariable("expression")String cron) throws Exception {
    super.execute(cron);
}

请忽略上面的注解名字。
所以你需要做的就是实现自己的注解LikePathVariable,把注解注册到Spring,大概在扫描package的时候可以确定这个值。


不太确定实现起来会不会麻烦,有什么需要调整的地方。

【热门文章】
【热门文章】