springboot配置文件参数映射到具体类

说明:该初始化可直接在static方法中获取参数

1、添加依赖

    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'

2、application.yml中添加配置参数

## JWT 密钥 - start
jwt:
  secret-key: 3453453453435435fg)
  access-token-expire-time: PT2H
  refresh-token-expire-time: PT8H
  refresh-token-expire-app-time: P7D
  issuer: zz.com
## JWT 密钥 - end

3、创建类

@Configuration
@ConfigurationProperties(prefix = "jwt")
public class TokenSettings {

    private String secretKey;
    private Duration accessTokenExpireTime;
    private Duration refreshTokenExpireTime;
    private Duration refreshTokenExpireAppTime;
    private String  issuer;

    public TokenSettings() {
    }

    // get/get。。。
}

4、初始化

@Component
public class StaticInitializerUtil {

    private TokenSettings tokenSettings;

    public StaticInitializerUtil(TokenSettings tokenSettings) {
        JwtTokenUtil.setTokenSettings(tokenSettings);
    }

}

5、调用,比如JwtTokenUtil静态方法中调用

public class JwtTokenUtil {

    private static final Logger log = LoggerFactory.getLogger(JwtTokenUtil.class);

    private static String secretKey;
    private static Duration accessTokenExpireTime;
    private static Duration refreshTokenExpireTime;
    private static Duration refreshTokenExpireAppTime;
    private static String  issuer;

    public static void setTokenSettings(TokenSettings tokenSettings){
        secretKey=tokenSettings.getSecretKey();
        accessTokenExpireTime=tokenSettings.getAccessTokenExpireTime();
        refreshTokenExpireTime=tokenSettings.getRefreshTokenExpireTime();
        refreshTokenExpireAppTime=tokenSettings.getRefreshTokenExpireAppTime();
        issuer=tokenSettings.getIssuer();
    }

    /**
     * 生成 access_token
     * @return       java.lang.String
     */
    public static String getAccessToken(String subject, Map claims){
        return generateToken(issuer,subject,claims,accessTokenExpireTime.toMillis(),secretKey);
    }
    
    public static String generateToken(String issuer, String subject,Map claims, long ttlMillis,String secret) {

        // 此处省略
    }
}

 

你可能感兴趣的:(Spring,Boot)