当前位置: 首页 > wzjs >正文

互联网推广代运营南平seo

互联网推广代运营,南平seo,网站设计 优帮云,wordpress支付插件Spring中Value的使用详解 1. Value基础用法 作用:将属性值注入到字段、构造函数参数或Setter方法中,支持直接读取配置文件属性或SpEL表达式。 示例1:从配置文件读取属性 // application.properties 或 application.yml app.nameSpringDemo …

Spring中@Value的使用详解


1. @Value基础用法

作用:将属性值注入到字段、构造函数参数或Setter方法中,支持直接读取配置文件属性或SpEL表达式。


示例1:从配置文件读取属性
// application.properties 或 application.yml
app.name=SpringDemo
app.port=8080
@Service
public class ConfigService {// 直接注入配置文件中的属性值@Value("${app.name}")private String appName;@Value("${app.port}")private int port;@Value("${unknown.value:Default}") // 默认值语法private String safeValue;public void printConfig() {System.out.println("App Name: " + appName);System.out.println("Port: " + port);System.out.println("Safe Value: " + safeValue);}
}

注释说明

  • ${key}:从配置文件中读取值,若不存在则抛出异常。
  • ${key:default}:若属性不存在,使用默认值 default

示例2:使用SpEL表达式
@Service
public class SpelService {// 计算表达式值@Value("#{ T(java.lang.Math).random() * 100 }")private double randomValue;// 使用系统属性@Value("#{ systemProperties['os.name'] }")private String osName;// 调用方法返回值@Value("#{ T(java.time.LocalDate).now() }")private String currentDate;public void printSpel() {System.out.println("Random Value: " + randomValue);System.out.println("OS Name: " + osName);System.out.println("Current Date: " + currentDate);}
}

2. @Value支持的数据类型
  • 基本类型String, int, double, boolean 等。
  • 复杂类型:需通过Spring的类型转换器(如 LocalDateListMap)。
  • 集合类型:使用逗号分隔字符串转换为集合:
    app.colors=red,green,blue
    
  @Value("${app.colors}")private List<String> colors; // 自动转换为List<String>

3. @Value的局限性
  • 不能注入Bean实例:只能注入基本类型或可通过转换器解析的类型。
  • 无法处理复杂对象:如注入一个 User 对象需通过 @ConfigurationProperties
  • 静态字段不生效@Value 不能用于静态字段。

4. @Value与@ConfigurationProperties对比
特性@Value@ConfigurationProperties
适用场景简单属性或少量属性注入复杂对象(如配置类)的批量注入
类型安全无(依赖字符串键名)有(绑定到POJO类,编译时检查)
代码简洁性简单场景代码少复杂场景代码更规范
支持集合/嵌套属性需手动转换自动处理嵌套属性(如 prefix.subkey

示例:@ConfigurationProperties替代复杂@Value
# application.properties
app.config.username=admin
app.config.password=secret
app.config.timeout=5000
// 定义配置类
@ConfigurationProperties(prefix = "app.config")
@Component
public class AppConfig {private String username;private String password;private int timeout;// getters/setters
}// 使用配置类
@Service
public class SecurityService {private final AppConfig config;@Autowiredpublic SecurityService(AppConfig config) {this.config = config;}public void printConfig() {System.out.println("Username: " + config.getUsername());}
}

5. 使用建议
  • 优先选择@ConfigurationProperties:当需要注入多个相关配置属性时,通过配置类实现类型安全和可维护性。
  • 使用@Value的场景
    • 快速注入少量简单属性。
    • 需要动态计算值(如SpEL表达式)。
  • 避免的误区
    • 不要在静态字段或常量上使用 @Value
    • 避免注入不存在的属性且无默认值(会导致启动失败)。

总结

@Value 是Spring中轻量级的属性注入方式,适合简单场景,而 @ConfigurationProperties 更适合复杂配置的集中管理。根据需求选择合适的方式,确保代码简洁且易于维护。

http://www.dtcms.com/wzjs/292016.html

相关文章:

  • 学技巧网站制作b站推广有用吗
  • 那几个网站可以做h5下载百度app
  • 制作网站需要多少钱枸橼酸西地那非片功效效及作用
  • 企业网站建设需注意什么营销型网站建设的步骤流程是什么
  • 国家认可现货交易平台aso优化的主要内容为
  • 怎么用电脑做网站服务器免费做网站的平台
  • 网页开发前景网站关键词优化方案
  • 滕王阁环境建设网站易思企业网站管理系统
  • 天门市住房和城乡建设局网站流量平台排名
  • 做照片书网站好微营销平台系统
  • 怎么建立图片的网站免费网站服务器
  • 网站百度未收录商桥安装显示百度推广客户端下载
  • 如何选择南京网站建设国际婚恋网站排名
  • 做网站收录的网站有哪些seo企业建站系统
  • php做网站特效昆明seo网站建设
  • 怎样查看网站开发语言东莞百度推广优化排名
  • 上海大学生兼职做网站参考网是合法网站吗?
  • wordpress登陆新域名seo公司是做什么的
  • 济南市人民政府门户网站国产免费crm系统有哪些在线
  • 东莞网站建设58小时seo
  • 呼市做网站公司安全优化大师
  • 网站判断手机跳转代码媒体平台推广
  • wordpress+站群插件2021年十大热点事件
  • 杭州门户网站建设seo软件全套
  • 天津网站seo设计自动点击器永久免费版
  • 深圳手机商城网站设计多少钱百度app官方下载安装到手机
  • 大型旅游网站软文代发
  • 网上鲜花店网站建设实施方案网页设计首页制作
  • 国外互动网站月入百万的游戏代理
  • 企业网站如何做自然搜索成都网络营销公司