spring-cloud Edgware.SR6 之 netflix eureka server 1.4.7(注册中心) 配置机制、开放的接口(api处理器)

配置机制

1、@EnableEurekaServer用途:--- 开关
  注册bean到spring上下文
      org.springframework.cloud.netflix.eureka.server.EurekaServerMarkerConfiguration.Marker

2、自动加载 EurekaServerAutoConfiguration 进行配置
  1、检查spring上下文是否有 EurekaServerMarkerConfiguration.Marker 对象
  2、如果有存在,注册各种bean

 扫描api处理器

.

/**
 * 扫描含有 @Path、@Provider 注解的类列表
 * <pre>
 *
 *
 * @see com.netflix.discovery.provider.DiscoveryJerseyProvider
 * @see com.netflix.eureka.resources.InstancesResource
 *      处理 http://127.0.0.1:8761/eureka/instances 类请求
 * @see com.netflix.eureka.resources.PeerReplicationResource
 * @see com.netflix.eureka.resources.SecureVIPResource
 * @see com.netflix.eureka.resources.StatusResource
 * @see com.netflix.eureka.resources.ServerInfoResource
 *      处理 curl -H "Accept:application/json" -X GET  http://127.0.0.1:8761/eureka/serverinfo/statusoverrides 类请求
 * @see com.netflix.eureka.resources.ApplicationsResource
 *      处理 http://127.0.0.1:8761/eureka/apps/** 类请求
 * @see com.netflix.eureka.resources.VIPResource
 * @see com.netflix.eureka.resources.ASGResource
 * </pre>
 */

.

public class EurekaServerAutoConfiguration extends WebMvcConfigurerAdapter {
     
     // ...

     /**
      * Construct a Jersey {@link javax.ws.rs.core.Application} with all the resources
      * required by the Eureka server.
      */
     @Bean
     public javax.ws.rs.core.Application jerseyApplication(Environment environment,
               ResourceLoader resourceLoader) {

          ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
                    false, environment);

          // 扫描含有 @Path、@Provider 注解的类列表
          // Filter to include only classes that have a particular annotation.
          //
          provider.addIncludeFilter(new AnnotationTypeFilter(Path.class));
          provider.addIncludeFilter(new AnnotationTypeFilter(Provider.class));

          // Find classes in Eureka packages (or subpackages)
          //
          Set<Class<?>> classes = new HashSet<Class<?>>();
          for (String basePackage : EUREKA_PACKAGES) {
               Set<BeanDefinition> beans = provider.findCandidateComponents(basePackage);
               for (BeanDefinition bd : beans) {
                    Class<?> cls = ClassUtils.resolveClassName(bd.getBeanClassName(),
                              resourceLoader.getClassLoader());
                    classes.add(cls);
               }
          }

          // Construct the Jersey ResourceConfig
          //
          Map<String, Object> propsAndFeatures = new HashMap<String, Object>();
          propsAndFeatures.put(
                    // Skip static content used by the webapp
                    ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX,
                    EurekaConstants.DEFAULT_PREFIX + "/(fonts|images|css|js)/.*");

          DefaultResourceConfig rc = new DefaultResourceConfig(classes);
          rc.setPropertiesAndFeatures(propsAndFeatures);

          return rc;
     }

     // ....
}

.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值