[springboot一本通]-3


2.1.properties配置文件加载

family.properties这种格式的配置文件,在之前章节的代码基础之上,使用如下的注解就可以将文件中的配置属性进行加载,非常简单!


@PropertySource(value = {"classpath:family.properties"})

public class Family {



2.2.yaml配置文件加载

spring 官方文档明确说明不支持使用@PropertySource加载YAML配置文件,但是我们仍然有办法,跟着我继续。

在这里插入图片描述

举一个例子:我们新建一个配置文件family.yml,把上一节用到的YAML数据结构放里面。用来模拟第三方jar包的额外配置文件(非application配置文件)。


#    1. 一个家庭有爸爸、妈妈、孩子。

#    2. 这个家庭有一个名字(family-name)叫做“happy family”

#    3. 爸爸有名字(name)和年龄(age)两个属性

#    4. 妈妈有两个别名

#    5. 孩子除了名字(name)和年龄(age)两个属性,还有一个friends的集合

#    6. 每个friend有两个属性:hobby(爱好)和性别(sex)



family:

  family-name: "happy family"

  father:

    name: zimug

    age: 18

  mother:

    alias:

      - lovely

      - ailice

  child:

    name: zimug2

    age: 5

    friends:

      - hobby: football

        sex:  male

      - hobby: basketball

        sex: female





  • 笔者通过阅读代码了解到,DefaultPropertySourceFactory是进行配置文件加载的工厂类。

  • 尽管其默认不支持读取YAML格式外部配置文件,但是我们可以通过继承DefaultPropertySourceFactory ,然后对它的createPropertySource进行一下改造。就可以实现YAML的“额外”配置文件加载。


public class MixPropertySourceFactory extends DefaultPropertySourceFactory {

  @Override

  public PropertySource<?> createPropertySource(@Nullable String name,

                                                EncodedResource resource)

                                                throws IOException {

    String sourceName = name != null ? name : resource.getResource().getFilename();



    if (sourceName != null

          &&(sourceName.endsWith(".yml") || sourceName.endsWith(".yaml"))) {

      Properties propertiesFromYaml = loadYml(resource);

      //将YML配置转成Properties之后,再用PropertiesPropertySource绑定

      return new PropertiesPropertySource(sourceName, propertiesFromYaml);

    } else {

      return super.createPropertySource(name, resource);

    }

  }



  //将YML格式的配置转成Properties配置

  private Properties loadYml(EncodedResource resource) throws IOException{

    YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();

    factory.setResources(resource.getResource());

    factory.afterPropertiesSet();

    return factory.getObject();

  }



}



  • 然后基于上一节的代码,在Family类的上面加上如下注解即可。通过factory属性明确的指定使用我们自定义的MixPropertySourceFactory加载yml配置文件。

@PropertySource(value = {"classpath:family.yml"}, factory = MixPropertySourceFactory.class)

public class Family {



三、使用@ImportResource加载Spring的xml配置文件


在没有Spring注解的时代,spring的相关配置都是通过xml来完成的,如:beans.xml。下面的XML配置的含义是:将com.zimug.bootlaunch.service.TestBeanService实例化并注入到Spring上下文环境中。


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"


# 总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

# Mybatis源码解析



![](https://img-blog.csdnimg.cn/img_convert/8f470ea2d2ef29e7971c056b22af8f7a.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/10333a311737155e140864bd9daabb28.webp?x-oss-process=image/format,png)

瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

# Mybatis源码解析



[外链图片转存中...(img-O466HS4z-1725970762108)]

[外链图片转存中...(img-sZpuRmqB-1725970762108)]

Springboot CAS-Client 是一个基于Springboot框架集成CAS(Central Authentication Service)的客户端。 CAS是一种单点登录(Single Sign-On)协议,它允许用户在一次登录后就能够访问多个应用,而无需重新认证。 Springboot CAS-Client 的作用是充当CAS服务端和应用系统之间的中间件,它负责向CAS服务端发送认证请求,并根据认证结果来管理用户的登录状态。 为了集成CAS,我们首先需要在Springboot项目中引入相应的依赖,例如spring-boot-starter-web和spring-boot-starter-security。接着,我们需要配置CAS服务端的地址信息,包括CAS服务端的登录URL、登出URL以及验证票据的URL等。 在Springboot CAS-Client中,我们也可以自定义一些过滤器和拦截器来实现相关的功能。例如,我们可以编写一个CAS认证过滤器来拦截所有的请求,并判断用户的登录状态。如果用户未登录,则跳转到CAS服务端进行认证;如果用户已登录,则直接放行请求。此外,我们还可以编写一个CAS登出拦截器来处理用户的登出请求,并在登出完成后将用户重定向到指定的页面。 总的来说,Springboot CAS-Client 提供了一个简洁、灵活的方式来集成CAS协议,使得我们的Springboot应用能够享受到单点登录带来的便利。过它,我们可以轻松地实现用户认证、登录状态管理以及注销等功能,提升用户体验并提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值