HttpServletBean 源码阅读

public abstract class HttpServletBean extends HttpServlet implements EnvironmentCapable, EnvironmentAware 

HttpServletBean继承自HttpServlet,实现了EnvironmentCapable, EnvironmentAware 接口。

成员变量

有两个类成员变量:

    @Nullable
    private ConfigurableEnvironment environment;

    private final Set<String> requiredProperties = new HashSet<>(4);

ConfigurableEnvironment

public interface ConfigurableEnvironment extends Environment, ConfigurablePropertyResolver

Configuration 接口大多数(如果不是全部)由Environment类型来实现。 该接口提供工具用以①设置活跃和默认的profiles和②操纵底层property sources。 允许客户端设置和验证所需的(required)属性,通过超级接口ConfigurablePropertyResolver自定义转换服务。

property sources可能会被删除,重新排序或替换; 并且可以使用从getPropertySources()返回的MutablePropertySources实例添加其他属性来源。

ApplicationContext正在使用Environment时,一定要在contextorg.springframework.context.support.AbstractApplicationContext#refresh() 被调用之前执行。 这可以确保所有property sources在容器引导过程中都可用,包括由org.springframework.context.support.PropertySourcesPlaceholderConfigurer

类方法

setActiveProfiles

setActiveProfiles 由实现抽象类AbstractEnvironment 实现:

@Override
public void setActiveProfiles(String... profiles) {
    Assert.notNull(profiles, "Profile array must not be null");
    synchronized (this.activeProfiles) {
        this.activeProfiles.clear();
        for (String profile : profiles) {
            validateProfile(profile);
            this.activeProfiles.add(profile);
        }
    }
}

其中:

rivate final Set<String> activeProfiles = new LinkedHashSet<>();

protected void validateProfile(String profile) {
    if (!StringUtils.hasText(profile)) {
        throw new IllegalArgumentException("Invalid profile [" + profile + "]: must contain text");
    }
    if (profile.charAt(0) == '!') {
        throw new IllegalArgumentException("Invalid profile [" + profile + "]: must not begin with ! operator");
    }
}
@Override
public void addActiveProfile(String profile) {
    if (logger.isDebugEnabled()) {
        logger.debug("Activating profile '" + profile + "'");
    }
    validateProfile(profile);
    doGetActiveProfiles();
    synchronized (this.activeProfiles) {
        this.activeProfiles.add(profile);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值