分布式微服务专栏002(springboot的配置读取与多环境配置)

欢迎大家加入我的github项目,一起学习,一起发展
---> 全栈工程师进阶学习站
---> 我的前端学习笔记
--->行业内最新最群的报告,工作日每日更新

—>原生 js 训练计划

DEBUG细节 :

不要把断点打在方法上

从配置文件中获取属性的值:

注意设置idea的编码格式

语法:@Value("${}")
作用:获取配置文件中的属性的值
缺点:获取多个需要频繁的取值

新知识点:

vo包的概念表示程序返回给前端页面的数据

dto包的概念表示程序给数据库的数据

谷歌插件JSON-handle用于更加直观的查看json字符串

@ConfigurationProperties(prefix = "")

//字符串写法
name: 云层
age: 18
id: 007
//list写法
list:
 - 王一鸣
 - 17
 //map写法
map: {k1 : v1,k2 : v2}

多环境配置

为什么配置多环境:

解耦了各种环境的配置

开发环境(dev)

测试环境( test)

生产环境(prd)

配置文件规范写法:application-dev.properties

指定读取配置文件:spring.profiles.active=配置环境名(-符号后面的)

面试默写

  1. 使用@value注解的语法

    @Value("${user.name}")
    
  2. 使用@ConfigurationProperties的语法

    @ConfigurationProperties(perfix = "user")
    
  3. 使用@ConfigurationProperties扫描yml配置文件中读取list与map时候,properties中分别应该怎么写?

    student:
      name: gavin
      age: 18
      gender: man
      list:
        - name: coder
        - age: fullstack
      map: {薪资: many,address: 杭州}
    
    teacher:
      name: betty
    
student.list[0]=gavin
student.list[1]=18
student.map.name=gavin
student.map.age=18
  1. @value与@configurationProperties注解分别在什么时候用

    当我们从配置文件中取出一两条数据的时候,选用@value,因为方便快捷

    当读取配合多的时候,如给一个对象配置赋值,我们需要@configurationProperties

  2. 多配置文件的写法

    application-dev.properties

    application-test.properties

    application-prod.properties

    后缀可替换为yml

  3. 多环境的切换命令

    spring.profiles.active=dev
    

课外作业:

1 String s = “xx” 在内存中所在位置?

JVM对于String的存储有一点特殊的地方在于有一块String常量池
这个常量池里面存着对String对象的引用。

比如,String s = "abc"会先去String常量池中查找有没有已经存在的引用,如果没有,声明的abc会直接生成一个String对象,并且会在String常量池中存入一个引用指向这个String对象。

之后直接声明的字符串同样也会遵循上面的步骤,所以第二次String s2 = "abc"String常量池中找到了一个引用指向第一次声明的字符串对象。

new String("abc")这样会直接在堆中创建新的对象,不会进入String常量池。要把这样的对象引用放入常量池中就涉及另一个String类的方法intern(),这个方法就是返回一个String对象的常量池引用。如果这个对象不在常量池中,就会把这个String对象放入常量池中并返回对应的对象引用。

2 “” 与’'在java中的区别?

""是字符串

''是字符char

3 在泛型中?与T的区别?

通配符(?)
上面有泛型的定义和赋值;当在赋值的时候,上面一节说赋值的都是为具体类型,当赋值的类型不确定的时候,我们用通配符(?)代替了

为了解决类型被限制死了不能动态根据实例来确定的缺点,引入了“通配符泛型” , 使用通配泛型格式为<? extends Collection>,“?”代表未知类型,这个类型是实现Collection接口。

注意:

如果只指定了<?>,而没有extends,则默认是允许Object及其下的任何Java类了。也就是任意类。

通配符泛型不单可以向下限制,如<? extends Collection>,还可以向上限制,如<? super Double>,表示类型只能接受Double及其上层父类类型,如Number、Object类型的实例。

泛型类定义可以有多个泛型参数,中间用逗号隔开,还可以定义泛型接口,泛型方法。这些都与泛型类中泛型的使用规则类似。

限制泛型 T

由于没有限制class GenericsFoo类型持有者T的范围,实际上这里的限定类型相当于Object,这和“Object泛型”实质是一样的。限制比如我们要限制T为集合接口类型。只需要这么做:
class GenericsFoo,这样类中的泛型T只能是Collection接口的实现类,传入非Collection接口编译会出错。

多接口限制

虽然Java泛型简单的用 extends 统一的表示了原有的 extends 和 implements 的概念,但仍要遵循应用的体系,Java 只能继承一个类,但可以实现多个接口,所以你的某个类型需要用 extends 限定,且有多种类型的时候,只能存在一个是类,并且类写在第一位,接口列在后面,也就是:

(泛型方法的类型限定)

<T extends SomeClass & interface1 & interface2 & interface3>

(泛型类中类型参数的限制)

public class Demo<T extends Comparable & Serializable> { 
  // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了 
} 

4 <?extends T>是什么意思?

  • <? extends T>:是指 **“上界通配符(Upper Bounds Wildcards)”**
  • <? super T>:是指 **“下界通配符(Lower Bounds Wildcards)”**

img

img

PECS(Producer Extends Consumer Super)
3.1 Producer Extends 你写的类是主要作为生产者向外提供数据,那么就用 extends
3.2 Consumer Super 你写的类是主要作为消费者,需要吃进数据,那么就用 super
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值