springboot配置文件使用方式(yml版)

本文介绍如何在SpringBoot项目中集成Shiro框架并利用YML进行动态配置,详细展示了febs项目的配置过程,包括应用yml配置、Java实例及使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本文以Febs项目 github  shiro框架集成相关配置文件为例

 java实现activemq远程监控(基于springBoot)yml动态配置 中也有应用,但是不全

1.springBoot  application.yml 文件

# febs 配置
febs:
  # 是否在控制台打印 sql语句
  showsql: true
  # 时间类型参数在前端页面的展示格式,默认格式为 yyyy-MM-dd HH:mm:ss
  timeFormat: yyyy-MM-dd HH:mm:ss
  # 是否开启 AOP 日志,默认开启
  openAopLog: true
  shiro:
    # shiro redis缓存时长,默认1800秒
    expireIn: 1800
    # session 超时时间,默认1800000毫秒
    sessionTimeout: 1800000
    # rememberMe cookie有效时长,默认86400秒,即一天
    cookieTimeout: 86400
    # 免认证的路径配置,如静态资源,druid监控页面,注册页面,验证码请求等
    anonUrl: /css/**,/js/**,/fonts/**,/img/**,/druid/**,/user/regist,/gifCode,/,/actuator/**,/test/**
    # 登录 url
    loginUrl: /login
    # 登录成功后跳转的 url
    successUrl: /index
    # 登出 url
    logoutUrl: /logout
    # 未授权跳转 url
    unauthorizedUrl: /403
  # 验证码
  validateCode:
    # 宽度,默认 146px
    width: 146
    # 高度,默认 33px
    height: 33
    # 验证码字符个数,默认4个字符
    length: 4

2.java中对应的实例

1.FebsProperties 对应yml中的febs:

@ConfigurationProperties(prefix = "febs") 为关键部分

类属性的命名对应yml中相关的命名

package cc.mrbird.common.config;

import cc.mrbird.common.domain.ValidateCodeProperties;
import cc.mrbird.common.shiro.ShiroProperties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "febs")
@Data
public class FebsProperties {

    private ShiroProperties shiro = new ShiroProperties();

    private ValidateCodeProperties validateCode = new ValidateCodeProperties();

    private String timeFormat = "yyyy-MM-dd HH:mm:ss";

    private boolean openAopLog = true;

}

2.ShiroProperties 对应yml中的febs:子级 shiro:

package cc.mrbird.common.shiro;

import lombok.Data;

@Data
public class ShiroProperties {

    // shiro redis缓存时长,默认值 1800 秒
    private int expireIn = 1800;
    // session 超时时间,默认 1800000毫秒
    private long sessionTimeout = 1800000L;
    // rememberMe 有效时长,默认为 86400 秒,即一天
    private int cookieTimeout = 86400;

    private String anonUrl;

    private String loginUrl = "/login";

    private String successUrl = "/index";

    private String logoutUrl = "/logout";

    private String unauthorizedUrl;

   }

3.ValidateCodeProperties 对应yml中的febs:子级 validateCode:

package cc.mrbird.common.domain;

import lombok.Data;

@Data
public class ValidateCodeProperties {

    // 验证码图片宽度
    private int width = 146;
    // 验证码图片高度
    private int height = 33;
    // 验证码字符位数
    private int length = 4;

}

3.使用方法

1.autowired注入类属性

2.通过get方法直接获取即可

注:以下为部分代码片段,只说明使用方法,并不完整

@Configuration
public class ShiroConfig {

    @Autowired
    private FebsProperties febsProperties;

@Bean
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();        
        
        Map<String, Filter> filters = shiroFilterFactoryBean.getFilters();//获取filters
		filters.put("user", new CustomUserFilter());
		
        // 设置 securityManager
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        // 登录的 url
        shiroFilterFactoryBean.setLoginUrl(febsProperties.getShiro().getLoginUrl());
        // 登录成功后跳转的 url
        shiroFilterFactoryBean.setSuccessUrl(febsProperties.getShiro().getSuccessUrl());
        // 未授权 url
        shiroFilterFactoryBean.setUnauthorizedUrl(febsProperties.getShiro().getUnauthorizedUrl());
		
        LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
        // 设置免认证 url
        String[] anonUrls = StringUtils.splitByWholeSeparatorPreserveAllTokens(febsProperties.getShiro().getAnonUrl(), ",");
        for (String url : anonUrls) {
            filterChainDefinitionMap.put(url, "anon");
        }
        // 配置退出过滤器,其中具体的退出代码 Shiro已经替我们实现了
        filterChainDefinitionMap.put(febsProperties.getShiro().getLogoutUrl(), "logout");
        // 除上以外所有 url都必须认证通过才可以访问,未通过认证自动访问 LoginUrl
        filterChainDefinitionMap.put("/**", "user");

        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

        return shiroFilterFactoryBean;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值