开发者社区> 问答> 正文

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}搞定

求各位大神给点建议。

"

展开
收起
因为相信,所以看见。 2020-05-27 10:02:39 1065 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    "

    不知道题主注意到@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的时候可以确定这个值。


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

    ######

    目前采用的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文件获取值

    "
    2020-05-27 17:35:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载