@ConfigurationProperties注解和@EnableConfigurationProperties配合使用
1.配置文件:
smartodn:
debug:
debug: ${smartodn.debug.debug}
isSkipBak: ${smartodn.debug.isSkipBak}
2.获取配置文件属性,封装到bean
package smartodn.platform.foundation.debug;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "smartodn.debug") //这里表示获取到springboot配置文件中前缀为smartodn.debug的属性并装配这个bean
public class DebugProperties {
/**
* 是否开启调试模式
*/
private boolean debug = false;
/**
* 是否跳过备份
*/
private boolean skipBak = false;
/**
* 默认的调试信息
*/
private String projectCode = "";
private String userInfo = "";
private String language = "en-US";
/**
* Gets the value of debug.
*
* @return the value of debug
*/
public boolean isDebug() {
return debug;
}
/**
* Sets the debug.
*
* @param debug debug
*/
public void setDebug(boolean debug) {
this.debug = debug;
}
/**
* Gets the value of skipBak.
*
* @return the value of skipBak
*/
public boolean isSkipBak() {
return skipBak;
}
/**
* Sets the skipBak.
*
* @param skipBak skipBak
*/
public void setSkipBak(boolean skipBak) {
this.skipBak = skipBak;
}
/**
* Gets the value of projectCode.
*
* @return the value of projectCode
*/
public String getProjectCode() {
return projectCode;
}
/**
* Sets the projectCode.
*
* @param projectCode projectCode
*/
public void setProjectCode(String projectCode) {
this.projectCode = projectCode;
}
/**
* Gets the value of userInfo.
*
* @return the value of userInfo
*/
public String getUserInfo() {
return userInfo;
}
/**
* Sets the userInfo.
*
* @param userInfo userInfo
*/
public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
}
/**
* Gets the value of language.
*
* @return the value of language
*/
public String getLanguage() {
return language;
}
/**
* Sets the language.
*
* @param language language
*/
public void setLanguage(String language) {
this.language = language;
}
}
3.让这个类被springboot容器管理,使用到注解:@EnableConfigurationProperties
/**
* 基本信息过滤器
*
* @author jWX562483
*/
@EnableConfigurationProperties(DebugProperties.class) //让上面的DebugProperties类被springboot容器管理
@WebFilter(filterName = "InstanceFilter", urlPatterns = "/*")
@Component
public class InstanceFilter extends OncePerRequestFilter {
private static final Logger logger = LogManager.getLogger(InstanceFilter.class);
@Autowired
private DebugProperties debugProperties;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if (debugProperties.isDebug()) {
HttpInfoUtils.setLanguage(debugProperties.getLanguage());
HttpInfoUtils.setProjectCode(debugProperties.getProjectCode());
HttpInfoUtils.setUser(JSON.parseObject(debugProperties.getUserInfo(), User.class));
} else {
try {
HttpInfoUtils.parseAndSetLanguage();
} catch (Exception e) {
logger.info(e.getMessage());
}
try {
HttpInfoUtils.parseAndSetProjectCode();
} catch (Exception e) {
logger.info(e.getMessage());
}
try {
HttpInfoUtils.parseAndSetUserInfo();
} catch (Exception e) {
logger.info(e.getMessage());
}
}
filterChain.doFilter(request, response);
}
}