返回顶部
首页 > 资讯 > 精选 >SpringBoot随机数设置及参数间引用的示例分析
  • 530
分享到

SpringBoot随机数设置及参数间引用的示例分析

2023-06-15 08:06:48 530人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关SpringBoot随机数设置及参数间引用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。自定义配置springBoot免除了项目中大部分手动配置,可以说,几乎所有的配

这篇文章将为大家详细讲解有关SpringBoot随机数设置及参数间引用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

自定义配置

springBoot免除了项目中大部分手动配置,可以说,几乎所有的配置都可以写在全局配置文件application.peroperties中,SpringBoot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义了配置文件,那么SpringBoot是无法识别这些配置文件的,此时需要我们手动加载。

接下来,将针对SpringBoot的自定义配置文件及其加载方式进行讲解。

(1)使用@PropertySource加载配置文件

我们可以使用@PropertySource注解结合@Configuration注解配置类的方式来加载自定义配置文件,@PropertySource注解用于指定自定义配置文件的具体位置和名称。同时,为了保证SpringBoot能够扫描该注解,还需要在类上添加@Configuration注解将实体类作为自定义配置类。

如果需要将自定义配置文件中的属性值注入到对应类的属性中,可以使用@ConfigurationProperties注解或者@Value注解进行属性值注入。

操作步骤:

在SpringBoot项目的resources目录下新建一个名为test.properties的自定义配置文件,在该配置文件中编写需要设置的配置属性:

# 对实体类对象MyProperties进行属性配置test.id=1test.name=test

在com.hardy.springboot_demo.pojo包下新建一个配置类MyProperties,提供test.properties自定义配置文件中对应的属性,并根据@PropertySource注解的使用进行相关的配置:

package com.hardy.springboot_demo.pojo;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;@Configuration // 自定义配置类@PropertySource("classpath:test.properties") // 指定自定义配置文件的文件位置和文件名称@EnableConfigurationProperties(MyProperties.class) // 开启对应配置类的属性注入功能@ConfigurationProperties(prefix = "test") // 指定配置文件注入属性前缀public class MyProperties {    private int id;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "MyProperties{" +                "id=" + id +                ", name='" + name + '\'' +                '}';    }}

这里主要是新建一个自定义配置类,通过相关注解引入了自定义的配置文件,并完成了自定义属性值的注入。

针对上述的几个注解,进行逐一讲解:

  • @Configuration注解表示当前类是一个自定义配置类,并添加为Spring容器的组件,这里也可以使用传统的@Component注解实现相同的功能;

  • @PropertySource("classpath:test.properties")注解指定了定义配置文件的文件位置和文件名称,此处表示自定义配置文件为classpath类路径下的test.properties文件;

  • @ConfigurationProperties(prefix = "test")将上述自定义配置文件test.properties中以test开头的属性值注入到该配置类属性中;

  • 如果配置类上使用的是@Component注解而非@Configuration注解,那么@EnableConfigurationProperties注解还可以省略。

编写测试方法进行测试:

@Autowiredprivate MyProperties myProperties;@Testvoid myPropertiesTest() {    System.out.println(myProperties);}

测试结果:

SpringBoot随机数设置及参数间引用的示例分析

(2)使用@Configuration编写自定义配置类

在SpringBoot框架中,推荐使用配置类的方式向容器中添加和配置组件。

在SpringBoot框架中,通常使用@Configuration注解定义一个配置类,SpringBoot会自动扫描和识别配置类,从而替换传统Spring框架中的XML配置文件。

当自定义一个配置类后,还需要在类中的方法上加上@Bean注解进行组件配置,将方法的返回对象注入到Spring容器中,并且组件名称默认使用的是方法名,当然也可以使用@Bean注解的name或value属性自定义组件的名称。

操作步骤:

在com.hardy.springboot_demo包下新建一个config包,并在该包下新建一个MyService类,该类中不需要写任何代码:

package com.hardy.springboot_demo.config;public class MyService {}

由于该类目前没有任何配置和注解,因此还无法正常被SpringBoot扫描和识别。

在config包下,新建一个MyConfig类,并使用@Configuration注解将该类声明为一个配置类,该类的内容如下:

package com.hardy.springboot_demo.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration // 定义该类为一个配置类public class MyConfig {        @Bean    public MyService myService(){        return new MyService();    }}

MyConfig是@Configuration注解声明的配置类(类似于声明了一个XML配置文件),该配置类会被SpringBoot自动扫描识别。

使用@Bean注解的myService()方法,其返回值对象会作为组件添加到Spring容器中(类似于XML配置文件中的标签配置),并且该组件id默认为方法名myService。

编写测试方法进行测试

@Autowiredprivate ApplicationContext applicationContext;    @Testvoid iocTest() {    System.out.println(applicationContext.containsBean("myService"));}

上述代码中,先通过@Autowired注解注入Spring容器示例ApplicationContext,然后在测试方法iocTest()中测试查看该容器中是否包含id为myService的组件。

执行测试方法iocTest(),运行结果如下:

SpringBoot随机数设置及参数间引用的示例分析

从测试结果可以看出,测试方法iocTest()运行成功,显示运行结果为true,表示Spirng的IOC容器中也包含了id为myService的实例对象组件,说明使用自定义配置类的形式完成了向Spring容器进行组件的添加和配置。

随机数设置及参数间引用

在SpringBoot配置文件中设置属性时,除了可以像前面示例中显示的配置属性值外,还可以使用随机值和参数间引用对属性值进行设置。下面,针对配置文件中这两种属性值的设置方式进行讲解。

随机值设置

在SpringBoot配置文件中,随机值设置使用到了SpringBoot内嵌的RandomValuePropertySource类,对一些隐秘属性值或者测试用例属性值进行随机值注入。

随机值设置的语法格式为${random.xx},xx表示需要制定生成的随机数类型和范围,它可以生成随机的整数、uuid或字符串,示例代码如下:

my.secret=${random.value} // 配置随机值my.number=${random.int} // 配置随机整数my.bignumber=${random.long} // 配置随机long类型数my.uuid=${random.uuid} // 配置随机uuid类型数my.number.less.than.ten=${random.int(10)} // 配置小于10的随机整数my.number.in.range=${random.int[1024,65536]} // 配置范围在[1024,65536]之间的随机整数

上述代码中,使用RandomValuePropertySource类中random提供的随机数类型,分别展示了不同类型随机值的设置示例。

参数间引用

在SpringBoot配置文件中,配置文件的属性值还可以进行参数间的引用,也就是在后一个配置的属性值中直接引用先前定义过的属性,这样就可以直接解析其中的属性值了。

使用参数间引用的好处就是,在多个具有相互关联的配置属性中,只需要对其中一处属性进行预先配置,那么其他地方都可以引用,省去了后续多处修改的麻烦。

参数间引用的语法格式为${xx},xx表示先前在配置文件中已经配置过的属性名,示例代码如下:

app.name=MyAppapp.description=${app.name} is a Spring Boot application

上述参数间引用设置示例中,先设置了“app.name=MyApp”,将app.name属性的属性值设置为了MyApp;接着,在app.description属性配置中,使用${app.name}对前一个属性进行了引用。

接下来,通过一个案例来演示使用随机值设置以及参数间引用的方式进行属性设置的具体使用和效果,具体步骤如下:

打开全局配置文件application.properties,在该配置文件中分别通过随机值设置和参数间引用来配置两个属性,示例代码如下:

# 随机值设置以及参数间引用配置hardy.age=${random.int[20,30]}hardy.description=hardy的年龄可能是${hardy.age}

在上述application.properties配置文件中,先使用随机数设置了hardy.age的属性值,该属性值的取值范围在[10,20]之间,随后使用参数间引用配置了hardy.description属性。

在项目的测试类中添加description属性,并将配置文件中hardy.description的属性进行注入,然后新增一个测试方法进行测试,测试代码如下:

@Value("${hardy.description}")private String description;@Testvoid placeholderTest() {    System.out.println(description);}

在上述代码中,通过@Value("${hardy.description}")注解将配置文件中的hardy.description属性值注入到了对应的description属性中,在测试方法placeholderTest()中对该属性值进行了输出打印。

执行测试方法后,控制台输出结果如下所示:

SpringBoot随机数设置及参数间引用的示例分析

可以看到,测试方法placeholderTest()成功打印出了description属性的注入内容(age的取值始终在[20,30]之间随机显示),该内容与配置文件中配置的属性值保持一致。

关于“SpringBoot随机数设置及参数间引用的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: SpringBoot随机数设置及参数间引用的示例分析

本文链接: https://lsjlt.com/news/279206.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot随机数设置及参数间引用的示例分析
    这篇文章将为大家详细讲解有关SpringBoot随机数设置及参数间引用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。自定义配置SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配...
    99+
    2023-06-15
  • SpringBoot随机数设置及参数间引用的操作步骤
    目录自定义配置(1)使用@PropertySource加载配置文件(2)使用@Configuration编写自定义配置类随机数设置及参数间引用随机值设置参数间引用自定义配置 Spri...
    99+
    2024-04-02
  • JVM参数设置的示例分析
    这篇文章主要介绍了JVM参数设置的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的...
    99+
    2023-06-02
  • Elasticsearch参数配置的示例分析
    小编给大家分享一下Elasticsearch参数配置的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Elasticsearch的config文件夹里面有两...
    99+
    2023-06-04
  • 函数参数的示例分析
    这篇文章将为大家详细讲解有关函数参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。函数的参数(实参和形参):形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,...
    99+
    2023-06-15
  • SpringBoot与SpringMVC中参数传递的示例分析
    小编给大家分享一下SpringBoot与SpringMVC中参数传递的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:普通参数与基本注解HandlerM...
    99+
    2023-06-20
  • PHP引擎php.ini参数优化的示例分析
    这篇文章主要介绍PHP引擎php.ini参数优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP引擎php.ini参数优化无论是apache还是nginx,php.ini都是适合的。而php-fpm.c...
    99+
    2023-06-14
  • mysql参数的示例分析
    这篇文章给大家分享的是有关mysql参数的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。慢查询是否开启select @@log_slow_queries; 慢查...
    99+
    2024-04-02
  • pip参数的示例分析
    这篇文章将为大家详细讲解有关pip参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pip参数解释# pip --help   U...
    99+
    2024-04-02
  • sendEmail-参数的示例分析
    本篇文章给大家分享的是有关sendEmail-参数的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。还在为Linux下没有便捷的邮件程序苦恼,还在为复杂的邮件服务器架设G...
    99+
    2023-06-06
  • pytorch DataLoader的num_workers参数与设置大小的示例分析
    这篇文章主要介绍pytorch DataLoader的num_workers参数与设置大小的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Q:在给Dataloader设置worker数量(num_worker...
    99+
    2023-06-15
  • JNDI资源引用设置的示例分析
    这篇文章主要介绍JNDI资源引用设置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!DataSource,JNDI, 资源引用设置 等server.xml中配置主机应用上下文    <...
    99+
    2023-06-03
  • PHP中函数参数的示例分析
    小编给大家分享一下PHP中函数参数的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP 函数参数可以通过参数向函数传递...
    99+
    2024-04-02
  • Redhat配置nagios参数说明的示例分析
    这篇文章主要为大家展示了“Redhat配置nagios参数说明的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redhat配置nagios参数说明的示例分析”这篇文章吧。参数说明服务出了...
    99+
    2023-06-16
  • linux中kill命令的参数以及示例分析
    linux中kill命令的参数以及示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。   kill号令用于终止指定的过程(terminate a pro...
    99+
    2023-06-05
  • Stream、WshShell、WshUrlShortcut对象及Shell.Application参数的示例分析
    这篇文章将为大家详细讲解有关Stream、WshShell、WshUrlShortcut对象及Shell.Application参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.Stream...
    99+
    2023-06-08
  • 如何进行JVM参数设置及分析
    本篇文章给大家分享的是有关如何进行JVM参数设置及分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选...
    99+
    2023-06-17
  • Spring Boot jar启动时设置环境参数的示例分析
    这篇文章主要介绍Spring Boot jar启动时设置环境参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring Boot jar 启动时设置环境参数1 摘要通常在使用 Spring Boot 开...
    99+
    2023-06-15
  • Oracle中out参数的示例分析
    这篇文章主要为大家展示了“Oracle中out参数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle中out参数的示例分析”这篇文章吧。Ora...
    99+
    2024-04-02
  • mysql中innodb_flush_log_at_trx_commit参数的示例分析
    这篇文章主要介绍mysql中innodb_flush_log_at_trx_commit参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、参数解释0:log buffe...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作