Search in sources :

Example 1 with SentinelWebMvcConfig

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig in project Sentinel by alibaba.

the class SentinelWebInterceptorTest method testPassIllegalConfig.

@Test(expected = IllegalArgumentException.class)
public void testPassIllegalConfig() {
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    config.setRequestAttributeName(null);
    SentinelWebInterceptor interceptor = new SentinelWebInterceptor(config);
}
Also used : SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig) Test(org.junit.Test)

Example 2 with SentinelWebMvcConfig

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig in project Sentinel by alibaba.

the class InterceptorConfig method addSpringMvcInterceptor.

private void addSpringMvcInterceptor(InterceptorRegistry registry) {
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    // Depending on your situation, you can choose to process the BlockException via
    // the BlockExceptionHandler or throw it directly, then handle it
    // in Spring web global exception handler.
    // config.setBlockExceptionHandler((request, response, e) -> { throw e; });
    // Use the default handler.
    config.setBlockExceptionHandler(new DefaultBlockExceptionHandler());
    // Custom configuration if necessary
    config.setHttpMethodSpecify(true);
    // By default web context is true, means that unify web context(i.e. use the default context name),
    // in most scenarios that's enough, and it could reduce the memory footprint.
    // If set it to false, entrance contexts will be separated by different URLs,
    // which is useful to support "chain" relation flow strategy.
    // We can change it and view different result in `Resource Chain` menu of dashboard.
    config.setWebContextUnify(true);
    config.setOriginParser(request -> request.getHeader("S-user"));
    // Add sentinel interceptor
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : DefaultBlockExceptionHandler(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler) SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)

Example 3 with SentinelWebMvcConfig

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig in project learn-simple by muggle0.

the class SimpleWebmvcConfig method addInterceptors.

@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 注冊sentinel 拦截器
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    config.setHttpMethodSpecify(true);
    config.setWebContextUnify(true);
    config.setBlockExceptionHandler(new SimpleBlockExceptionHandler());
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)

Example 4 with SentinelWebMvcConfig

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig in project spring-cloud-alibaba by alibaba.

the class SentinelWebAutoConfiguration method sentinelWebMvcConfig.

@Bean
@ConditionalOnProperty(name = "spring.cloud.sentinel.filter.enabled", matchIfMissing = true)
public SentinelWebMvcConfig sentinelWebMvcConfig() {
    SentinelWebMvcConfig sentinelWebMvcConfig = new SentinelWebMvcConfig();
    sentinelWebMvcConfig.setHttpMethodSpecify(properties.getHttpMethodSpecify());
    sentinelWebMvcConfig.setWebContextUnify(properties.getWebContextUnify());
    if (blockExceptionHandlerOptional.isPresent()) {
        blockExceptionHandlerOptional.ifPresent(sentinelWebMvcConfig::setBlockExceptionHandler);
    } else {
        if (StringUtils.hasText(properties.getBlockPage())) {
            sentinelWebMvcConfig.setBlockExceptionHandler(((request, response, e) -> response.sendRedirect(properties.getBlockPage())));
        } else {
            sentinelWebMvcConfig.setBlockExceptionHandler(new DefaultBlockExceptionHandler());
        }
    }
    urlCleanerOptional.ifPresent(sentinelWebMvcConfig::setUrlCleaner);
    requestOriginParserOptional.ifPresent(sentinelWebMvcConfig::setOriginParser);
    return sentinelWebMvcConfig;
}
Also used : DefaultBlockExceptionHandler(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler) Logger(org.slf4j.Logger) ConditionalOnClass(org.springframework.boot.autoconfigure.condition.ConditionalOnClass) SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) RequestOriginParser(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser) Configuration(org.springframework.context.annotation.Configuration) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig) UrlCleaner(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.UrlCleaner) EnableConfigurationProperties(org.springframework.boot.context.properties.EnableConfigurationProperties) Optional(java.util.Optional) Bean(org.springframework.context.annotation.Bean) ConditionalOnProperty(org.springframework.boot.autoconfigure.condition.ConditionalOnProperty) BlockExceptionHandler(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler) ConditionalOnWebApplication(org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication) WebMvcConfigurer(org.springframework.web.servlet.config.annotation.WebMvcConfigurer) Type(org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type) StringUtils(org.springframework.util.StringUtils) DefaultBlockExceptionHandler(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig) Bean(org.springframework.context.annotation.Bean) ConditionalOnProperty(org.springframework.boot.autoconfigure.condition.ConditionalOnProperty)

Example 5 with SentinelWebMvcConfig

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig in project ddf-common by dongfangding.

the class SentinelAutoConfiguration method addSpringMvcInterceptor.

/**
 * 接口请求后会被拦截到控制台的---簇点链路上, 可以不适用@SentinelResource注解, 区别是, 如果接口调用链上没有生命是的@SentinelResource资源,
 * 那么就将最外层接口入口层(即方法的@RequestMapping)作为资源且不会往下生成资源链。而如果@RequestMapping方法调用了某个@SentinelResource资源,
 * 则会在入口层往下生成资源链路
 * <p>
 * 格式如下
 * 无资源映射
 * /helloA
 * <p>
 * 有资源映射
 * /helloB
 * -- hello(如果这个方法声明了@SentinelResource的话)
 *
 * @param registry
 */
private void addSpringMvcInterceptor(InterceptorRegistry registry) {
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    // Depending on your situation, you can choose to process the BlockException via
    // the BlockExceptionHandler or throw it directly, then handle it
    // in Spring web global exception handler.
    // 将异常抛出去, 然后接管异常处理
    config.setBlockExceptionHandler((request, response, e) -> {
        throw e;
    });
    // Use the default handler.
    // config.setBlockExceptionHandler(new DefaultBlockExceptionHandler());
    // Custom configuration if necessary
    config.setHttpMethodSpecify(true);
    // By default web context is true, means that unify web context(i.e. use the default context name),
    // in most scenarios that's enough, and it could reduce the memory footprint.
    // If set it to false, entrance contexts will be separated by different URLs,
    // which is useful to support "chain" relation flow strategy.
    // We can change it and view different result in `Resource Chain` menu of dashboard.
    config.setWebContextUnify(true);
    config.setOriginParser(request -> request.getHeader("S-user"));
    // Add sentinel interceptor
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)

Aggregations

SentinelWebMvcConfig (com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)6 SentinelWebInterceptor (com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor)5 DefaultBlockExceptionHandler (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler)3 BlockExceptionHandler (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler)2 RequestOriginParser (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser)2 UrlCleaner (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.UrlCleaner)2 Optional (java.util.Optional)2 ConditionalOnWebApplication (org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication)2 Bean (org.springframework.context.annotation.Bean)2 StringUtils (org.springframework.util.StringUtils)2 SentinelProperties (com.alibaba.cloud.sentinel.SentinelProperties)1 RequiredArgsConstructor (lombok.RequiredArgsConstructor)1 Test (org.junit.Test)1 Logger (org.slf4j.Logger)1 LoggerFactory (org.slf4j.LoggerFactory)1 Autowired (org.springframework.beans.factory.annotation.Autowired)1 ConditionalOnClass (org.springframework.boot.autoconfigure.condition.ConditionalOnClass)1 ConditionalOnProperty (org.springframework.boot.autoconfigure.condition.ConditionalOnProperty)1 Type (org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type)1 EnableConfigurationProperties (org.springframework.boot.context.properties.EnableConfigurationProperties)1