二、SpringBoot配置文件解析

本文接着上一篇简单SpringBoot项目例子,介绍配置文件的使用。包括在全局配置文件application.properties中自定义属性、参数间引用,还讲解了使用自定义配置文件、随机配置文件,以及外部参数的命令行配置等内容。

←SpringBoot入门篇                                                                                                                                      

上篇学习了一个简单的SpringBoot项目例子,下面接着上一篇的例子进行配置文件的学习。

SpringBoot使用了一个全局配置文件application.properties,该文件在\src\main\resources\目录下,该全局配置文件的作用是对一些默认的配置进行修改。

一、自定义属性

application.properties配置文件支持自定义属性的支持,这样可以把一些常量配置在改配置文件里面。在改配置文件里面进行如下配置:

配置完这些属性,使用的时候就在需要使用的地方通过注解@Value("${cn.org.marshal.name}")就可以将配置的属性值绑定到需要的属性上面。

启动项目:打开浏览器访问http://localhost:8080就可以看到输出内容

有时候属性太多,不适合一个一个绑定到属性字段上。针对这种情况官方提倡绑定成一个bean对象,这里创建一个Java的Bean类,顶部需要使用注解@ConfigurationProperties(prefix = "cn.org.marshal")类指定使用对应的那些属性:

package cn.org.marshal.springboot.pojo;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "cn.org.marshal")
public class UserPojo {
    private String name;
    private int age;

    public UserPojo() {}
    public UserPojo(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

 

上面的bean类配置完之后,还需要在SpringBoot的入口处使用@EnableConfigurationProperties({UserPojo.class})指定需要加载那个bean类。如果不写UserPojo.class,在bean类那边添加

package cn.org.marshal.springboot;

import cn.org.marshal.springboot.pojo.UserPojo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties({UserPojo.class})
public class SpringbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}

最后在Controller类中引入UserPojo即可:

package cn.org.marshal.springboot.controller;

import cn.org.marshal.springboot.pojo.UserPojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SpringbootController {

    @Autowired
    UserPojo userPojo;

    @RequestMapping("/")
    public String index() {

        return "Hello ! " + userPojo.getName() + ", 你已经" + userPojo.getAge() + "岁了。";
    }
}

二、参数间的引用

在application.properties中的各个参数间可以互相引用

cn.org.marshal.name="Marshal"
cn.org.marshal.age=28
cn.org.marshal.nameAge=${cn.org.marshal.name}, 你已经${cn.org.marshal.age}

这样就只需要调用cn.org.marshal.nameAge属性就可以了。

三、使用自定义配置文件

有时候我们不希望把所有配置文件都放在application.properties里面,这时候我们可以另外定义一个,路径也在\src\main\resources\目录下

cn.org.marshal.name="Marshal"
cn.org.marshal.age=28
cn.org.marshal.nameAge=${cn.org.marshal.name}, 你已经${cn.org.marshal.age}

创建一个UserBean类:

注意:需要添加@Configuration和@PropertySource("classpath:applicationtest.properties")后才可以读取,1.5以前的版本可以通过locations指定properties文件的位置@ConfigurationProperties(prefix = "config2",locations="classpath:applicationtest.properties")

package cn.org.marshal.springboot.pojo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@ConfigurationProperties(prefix = "cn.org.marshal")
@PropertySource("classpath:applicationtest.properties")
public class UserBean {

    private String name;
    private int age;
    private String nameAge;

    public UserBean() {}

    public UserBean(String name, int age, String nameAge) {
        this.name = name;
        this.age = age;
        this.nameAge = nameAge;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String getNameAge() {
        return nameAge;
    }
    public void setNameAge(String nameAge) {
        this.nameAge = nameAge;
    }
}

四、随机配置文件

在配置文件中使用${random}来生成各种不同类型的的随机值,从而简化了代码生成的麻烦。

cn.org.marshal.intValues=${random.int}

五、外部参数配置-命令行参数配置

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

内容概要:本研究聚焦于绿电直连型电氢氨园区的优化运行,提出一种集成绿色电力直接供给、电解水制氢及氢气合成氨工艺的综合能源系统架构。通过建立包含风光发电、电解槽、氨合成反应器、储氢罐、电网交互及多类型负荷在内的系统模型,综合考虑绿电直供优先、能量梯级利用与多能互补原则,构建以系统综合运行成本最小化为目标的优化调度模型。研究采用Matlab与Python工具进行算法求解和仿真分析,利用实际气象与负荷数据完成案例验证,评估了不同运行策略下系统的经济性、可再生能源消纳能力与碳减排效益,为新型电氢氨一体化园区的规划与运行提供了理论依据和技术支撑。; 适合人群:具备一定电力系统、新能源或化工背景的研究生、科研人员及从事综合能源系统规划与优化工作的工程技术人员。; 使用场景及目标:①用于科研学习,理解电-氢-氨多能转换系统的建模与优化方法;②为工业园区的低碳化、智能化改造提供技术参考与决策支持;③作为开发类似综合能源管理系统的理论基础。; 阅读建议:此资源包含完整的模型代码、数据与论文,使用者应结合代码仔细研读论文中的模型构建部分,重点关注目标函数与约束条件的设计逻辑,并尝试修改参数进行仿真,以深入掌握优化算法在实际系统中的应用。
内容概要:本文深入探讨了RS485通信协议在芯片行业自动化测试系统中的实际开发与应用,涵盖其关键概念、电气特性、通信机制及与Modbus RTU协议的结合使用。文章重点介绍了差分信号完整性设计、主从时序控制、CRC校验与重传机制等核心技术要点,并通过一个基于Python的完整代码实例,展示了如何实现RS485主站对探针台、自动分选机等芯片测试设备的控制与数据采集。此外,还分析了RS485在晶圆探针台、ATE设备集群和环境监控等典型场景的应用,并展望了其与工业以太网融合、智能化诊断、高速化及AI集成的发展趋势。; 适合人群:具备一定嵌入式系统或工业通信基础,从事芯片测试、自动化设备开发及相关领域的研发人员,尤其是工作1-3年希望提升现场总线应用能力的工程师。; 使用场景及目标:①理解RS485在高干扰芯片测试环境中稳定通信的设计原理;②掌握Modbus RTU协议在Python下的实现方法,用于实际控制探针台、Handler等设备;③构建可靠的数据采集与设备控制系统,支持CRC校验、异常处理和日志追踪;④为后续向高速通信和智能诊断系统升级提供技术储备。; 阅读建议:此资源强调实战开发,建议结合硬件环境动手调试代码,重点关注线程锁、CRC计算、帧解析和超时控制等关键环节,在真实产线中验证通信稳定性,并利用日志系统进行故障分析与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值