从零开始的Spring Boot学习【八】【配置类和占位符表达式】

15 篇文章 5 订阅
15 篇文章 0 订阅

我们先把在主程序中引入spring.xml的注解先注释掉。

接下来我们尝试使用注解的方式进行配置,而不是xml文件的格式。

注解的形式

第一:写一个类,配置类

第二:添加@Configuration和@Bean

我们先创建一个新的package,区分于其他类型的package,然后在里面创建一个Class。

我们打算把这个新建的类当作配置类,让它等价于spring.xml。

在spring.xml中,在标签<beans>中,我们是可以在里面写上很多的<bean>标签的。

同样,spring.xml能做的事情,我们配置类肯定也可以啊。要想取代一个产品,那么这个产品最基本的就是要有原来产品的功能(甚至更优越)。

配置类(注解方式):

xml方式:

我们需要在配置类上添加@Configuration,代表它是一个配置类,我们之前讲过。然后在方法上方添加@Bean,等价于xml方式中的<bean></bean>。而我们方法的名字getStudent就等价于<bean>中的id,return stuService就等价于<bean>中填写的class

口说无凭,我们来测试一下。

在上章我们写的test()方法中,因为id为方法名,所以我们getBean方法中填写的字符串也要做相应的修改,改成我们的方法名getStudent,然后进行测试。

好了,答应出StudentService对象的相关信息,代表我们的配置没有问题。

在Service层我们通常是需要引入Dao层的,而在spring.xml中写<bean>的时候,我们通常需要写上属性标签。

就像这样:(以下做一个假设)

//spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean id="studentService" class="com.example.demo.service.StudentService">
		<property name="studentDao" ref="studentDao"></property>
	</bean>
	<bean id="studentDao" class="com.example.demo.dao.StudentDao">
	</bean>
</beans>

在StudentService中引入了dao层我们就需要做一个映射,ref="studentDao",然后在下方还要写上dao层的bean。这样做很麻烦耶。在Spring Boot中我们使用注解的方式就非常的方便了

就像这样:

//配置类(等价于spring.xml)
@Configuration
public class ConfigTest {
	@Bean
	public StudentService getStudent() {
		StudentService stuService = new StudentService();
		         	
		StudentDao stuDao = new StudentDao();

                //如果StudentService中做了设置dao层的方法
        	stuService.setStudentDao(stuDao);
                
		return stuService;//返回值<bean class="...">
                //返回值中就会自带上dao层的数据了
	}
}

好了,注解写配置类告一段落先,我们的注意力回到默认的全局配置文件上(application.properties和application.yml)。

我们来介绍以下占位符表达式

${random.uuid}:uuid
${random.value}:随机字符串
${random.int}:随机整型数
${random.long}:随机长整型数
${random.int(10)}:10以内的整型数
${random.int[1024,65536]}:指定随机数范围

这些是啥?怎么用的啊?我们来举一个例子。

大家还记得entity中有一个Student的实体类把,我们拿age属性来举个例子,先把我们之前自己指定的配置文件的注解注释掉,@Value也注释掉,这样子,它就默认是使用的application.properties配置文件了。然后我们回到application.properties中。

例如我们写上${random.int}吧,然后测试一下。

可以发现age的值是一个随机数,符合我们的介绍,我们再试试其他的,这次我们在yml配置文件中尝试一下。

我们这次来试一个随机字符串,我们测试运行一下,看看结果。

的的确确是一个随机字符串。除了这些随机数外,我们还有不是随机数的,例如在第一个配置文件中引用第二个配置文件中的值

我们在application.properties中随便写一个key,然后value对应abc,然后我们尝试在yml中引用这个值。

如上图所示,然后我们运行测试看一下结果。

是没有问题的,就是说我们可以在两个配置文件中相互引用,也就变相证明这两个配置文件是相互互补的。

我们现在更改为student.a.b2,但是在.properties中不做任何的修改,看看会发生什么,我们测试运行。

配置文件没有识别到对应的key和value,所以把它当作一个字符串去输出了。(有没有人刚开始阅读是以为它会报错还是name会显示为null,被骗了吧)

下一章讲一下Spring Boot的多环境配置以及切换。

关注博主,更多精彩哦!

 

上一章:从零开始的Spring Boot学习【七】【@PropertySource和@ImportResource】

下一章:从零开始的Spring Boot学习【九】【多环境设置以及切换】

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KnightHONG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值