00:00
好,接下来呢,我们再来看一下另外一种获取的指导方式,除过用configuration properties从配置文件中哎,我们来读取person里边所有的属性来注入之外,我们还有一种方式把它注掉,是什么呢?我们有一个注解叫value,这是我们spring的一个底层注解,知道同学,那么它就应该类似于这个功能,我们来写一下。我们以前呢,都是用配置的方式,比如我们以前配并用标签的时候啊,我们必标签里边我要为哪一个组件创建对象,哎,我写一个person类型,包括呢,这个创建的时候每一个属性值是多少,我写一个property这个标签,我们用name来指定我们要赋值的属性名last name,而Y6呢,那就是指定值了。而这一块的value就跟我们这个at value注解是一样的,反正这个component注解的作用也是把person加到容器中,这个B标签也是加到容器中,而这是用Y6赋值,那这就是用at y6注解来赋值,都一样,而这个Y6呢,之前能写什么呢?比如能写我们这个字面量,哎,我们以前呢,能写什么就是什么字符串啊,数字布尔值都能写,包括呢,还能写高了福大括号一个K,它的作用呢,是从环境变量,从环境变量或者呢,我们也叫配置文件,文件中获取值。
01:36
获取值的来,这是它的第二种写法,第三种呢,它还支持井号打括号,哎,这就是我们说的SP言了,哎,Spring的表达式语言,然后呢,它支持这几个,那么我们value注解这那也就支持这几个,那比如我想要获取配置文件中last name,那我就应该是Dollar福。
02:02
大括号什么呢?哎,我们来到配置文件里边,Person的last name,把这一段我们来复制来放在这好,包括呢我就要H,哎,我来获取,那我呢就不获取配置文件了,我来测一些个写法,测什么呢?井号大括号我来算一下,哎,十。11乘以二啊,那年龄就应该是22,看它是不是算出来的,这是我们spring的表达式,然后呢,还有这个布尔值,我们的字面量我也可以来指定,比如呢,我就写一个出好,我们呢就拿这三个属性来测一测,看行不行我们来运行。我们来看一下,哎,张三22是算出来没问题处也没问题,然后呢,这个at value6也行,但是他问它跟configuration properties有没有区别啊,你看首先我们严重感觉到就是configuration properties只需要一个注解,它呢批量给我们进行注入,而value那就要一个一个指定了等等,那我们把这些的区别我们都来放在这儿,我们来写一个表格,把三行三列四行好,那么呢一个呢就是我们这个configuration。
03:27
Properties这个注解。和咱们这个value,它来获取值的区别,首先呢,我们在功能上。功能上configuration properties,它可以批量注入咱们这个配置文件中的属性。来,我们在这儿只需要指定一个perfect就行了,而value呢,它必须一个个指定,这是第一个,第二个呢,我们来说configuration,它还支持一个叫松散绑定。
04:12
也就是说我们这个松散语法。这松语法的意思就是说,诶,特别是遇见这个lastname。也就是说我们如果是这种情况下,我们有一个属性名叫first name,它是驼峰命名法的,那么呢,你用中间的这个杠代表后边一个字母大写,或者下划线,或者他们之间都用下划线大小写不区分,哎,都是可以的,这是我们这个松散绑定,但是呢,我们只有configurationties能支持这个特点,那么我们来看,如果呢,我把这个value。我来取成一个last大name,由于我们配置文件里边,哎,这是一个什么last-name,好,我们来看能不能支持运行。
05:06
我们发现呢,这就启动报错了,说咱们这个person还是这个last name获取值有问题,然后呢,我们必须是last-name呢,我们这个它不支持,我们这个松散语法绑定不支持,而我们这个con呢,它支持他怎么支持呢?我把这个注掉,我把这个注掉。我把这个,我把这个打开。但是我们这些properties里边的这些配置,我们什么都不动,然后呢,我们来测试一下用configuration properties获取值。哎,我们这儿呢,拉name是能获取到值的,比如说我们这一块你配置你写拉杠name还是拉大name,这都没问题,比如说呢,人家支持这个松散语法绑定。
06:00
我们来看看一下,我改掉,哎也没问题,所以呢,这就是我们说的,嗯,第二个松散语法绑定,我们只有configuration properties支持第三个。比如说呢,我们这个value,当然它也有它的好处,它呢还支持spel,也就说我们这个spring的表达式语言。比如呢,Spell支持方面,那么我们ation proper它就不支持了,而我们这个value它是支持的,因为我们呢,在at value上我来写一个东西,哎,我们之前看过,哎它能帮我们算出来,但是呢,同样我们要把这个H我来尝试来配在这,哎我来写一个表达式行不行啊,我们来试一下。哎,我们发现它这就错了,错的原因呢,它说这是edge edge有错了,要你要注入这个值的时候,哎,Type Miss match类型转换异常,所以呢,我们这一块它又是不支持表达式语言的,然后呢,这是我们的第二个区,那么第三个区别呢,我们说configurationties还支持G30校验。
07:17
哎,再加一个。好,我们给它里边呢,再来扩展一个。再来一行,好,我们这个GSR303数据校验,数据校验我们configuration properties它能支持,而我们这个an value它就不支持,也就是呢,我们在给配置从配置文件中注入值的时候,那还可以校验一下,怎么校验呢?诶,我可以这样用一个注解叫at va,哎,意思呢,我们这个扎宾里面的属性需要校验,哎,比如呢,我们来加上第一个校验last name last name呢?我来给一个校验规则,叫,比如我们就叫一个叫email吧,Email的意思呢,就是我们这个你必须填成邮箱格式。
08:12
好,我们来说一下,Lastname必须是。邮箱格式,那好我们是configuration properties的情况下我来运行。我们来看。哎,这一块呢,就报错了,说在注入last name的时候,哎,错误代码是email person last name,然呢,我们这个不是email,包括呢,我们一直往下翻,它还有错误的提示消息,不是一个合法的电子邮件地址,说明呢,它启动了校验,但是呢,如果我们换成at y6,哎,它不来取值了,我呢直接用这个Y6。放在这儿按value。把这个按value呢,我来拿来这个小括号漏了一个,好,我们把这按value,我们放在这儿,让他给我们来注入址。
09:08
走。我们来看一下这个校验还能不能生效呢?哎,我们发现这个校验是无效的,哎,张三照样是到值了,然后呢,这是他们的这个区别在GSR303上,我们这个支持啊,Value不支持,所以呢,这就是他俩,我们无论是啊配置文件你写什么都行,配置文件啊,不管是页面还是properties。哎,他们都能获取到值,只是呢,每一个获取值的区别,哎我们在这呢做了一个简单的对比,包括呢,这个GSR303数据校验的时候,哎,我们怎么做的这个数据校验,你在这儿记录一下数据校验配置文件。
10:02
注入咱们这个数据校验,入数据校验呢,我们只需要来写,哎,我们必须呢用properties来才可以,然后呢,我把这一段代码复制过来。Con。好,放在这儿。好,这呢就是我们configuration与value取值的不同。那有些同学说,诶,我们到底在何时用哪个比较合适呢?我们再来看一个最大的不同,我们来到咱们这个value跟compation properties,我呢把它注掉,它获取值一切都是正常的,而且呢还能做校验,我这个校验呢,我也注掉不要校验功能了,现在呢,这些值我们现在不以它们为例,我用at value,我来获取一下map的值at value。
11:01
按Y呢,那就大号从配置文件中,我们这个配置文件中有一个叫maps,这里边呢都是一些Q。好,我们来看它能不能获取到,走,我们现在用的是an y6主解。好,我们启动的时候发现报错了,就是解析这个map,也就说呢,最大的在这我们这个value注解。在咱们这个复杂类型封装,复杂类型咱们这个封装的时候,我们这个configuration properties它是能支持的,我们value注解它是不支持的,它呢只能取出一些基本类型的这个数据,所以呢,一句话。也就说呢,我们什么时候用properties,什么时候用value,其实呢,就是这个,如果说哎,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值。
12:16
某项某项值,我们呢就使用an,那举一个例子来,我呢这写一个CTRL了。C,我呢,就叫hello controller.hello c。而这个control呢,我来用risk control来标注上来,它呢就一个方法。把这个关掉好,它呢就一个方法,Public string来,我们say hello,我们要说一个哈,这个哈,给谁说呢,我们就来hello,哎,我想要hello加上一个人名字,而这个人名呢,在配置文件中,所以说呢,我可以给它里边来写一个属性name,而这个name呢,我从配置文件中,我直接按value我来获取就行了,我Dollar福大括号,诶配置文件中呢,有一个person last name,张三好,我把它拿来,然后呢,我们就给这个人来打招呼。
13:27
安踏request卡。哎,我们就叫say hello,我们来访问一下这个请求。比如呢,我们要打招呼的这个人,我们只是某项配置的值,我们在配置文件中啊,我们只是获取一下,用一下,那我们就用它来获取,我们来看这一块呢,有哦,还是我们这个,我们没注完这个呢,是不同的,不行的,我们把这个一定要掉掉。然后呢,我们再来启动。
14:01
走。启动起来,我们来访问这个c hello请求。来访问local host80,嗯,八零什么呢?来看一下这个端口号来,我们是8081LOCAL host8081下达这个c hello回撤来我们看到给张三啊,就打打个招呼,所以说呢,我们只是在业务逻辑中获取一下配置文件的中的值,我们就使用an为理,哎,如果说如果说哎,我们专门编写了。一个咱们这个渣逼。Java来和配置文件进行映射。进行映射,比如说呢,这就类似于我们跟数据库里边的记录映射,我们专门来写一个破一样,我们专门写了一个扎宾来映射配置文件中的值,那么我们就直接使用configuration properties,它呢也就一次性给我们把配置文件中相关的属性都注入进来了,那就使用它,所以呢,这是它们的区别,当然在合适的时候啊,你如果需要啊,用到其他注解,那么你就这两个结合着用,这是它们的区别。
我来说两句