@Configuration 注解的类

例如   ////   带有 @Configuration 注解的 RestConfig 类   

在 Spring 框架中,带有 `@Configuration` 注解的 `RestConfig` 类通常用于**集中配置与 RESTful API 相关的组件或行为**。根据类名和常见实践,它的作用可能包括以下场景:

---

### 1. **配置 REST 客户端(如 `RestTemplate` 或 `WebClient`)**
- **定义 HTTP 客户端的行为**:设置超时时间、连接池、默认请求头等。
- **示例代码**:
  ```java
  @Bean
  public RestTemplate restTemplate() {
      RestTemplate restTemplate = new RestTemplate();
      restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
      // 设置超时时间(单位:毫秒)
      ((HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory())
              .setConnectTimeout(5000);
      return restTemplate;
  }
  ```

---

### 2. **自定义序列化/反序列化规则**
- **配置 JSON 转换器**:例如统一日期格式、处理空值、忽略未知字段等。
- **示例代码**:
  ```java
  @Bean
  public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
      MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
      ObjectMapper objectMapper = new ObjectMapper();
      objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
      objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
      converter.setObjectMapper(objectMapper);
      return converter;
  }
  ```

---

### 3. **添加全局拦截器(Interceptor)**
- **统一处理请求/响应**:例如添加认证 Token、记录请求日志、统一异常处理等。
- **示例代码**:
  ```java
  @Bean
  public ClientHttpRequestInterceptor authInterceptor() {
      return (request, body, execution) -> {
          request.getHeaders().add("Authorization", "Bearer " + getToken());
          return execution.execute(request, body);
      };
  }
  
  // 将拦截器添加到 RestTemplate
  @Bean
  public RestTemplate restTemplate(List<ClientHttpRequestInterceptor> interceptors) {
      RestTemplate restTemplate = new RestTemplate();
      restTemplate.setInterceptors(interceptors);
      return restTemplate;
  }
  ```

---

### 4. **配置跨域请求(CORS)**
- **允许跨域访问**:定义允许的域、方法、请求头等。
- **示例代码**:
  ```java
  @Bean
  public WebMvcConfigurer corsConfigurer() {
      return new WebMvcConfigurer() {
          @Override
          public void addCorsMappings(CorsRegistry registry) {
              registry.addMapping("/api/**")
                      .allowedOrigins("https://example.com")
                      .allowedMethods("GET", "POST");
          }
      };
  }
  ```

---

### 5. **集成第三方 REST 工具**
- **配置 Feign Client、Retrofit 等**:例如设置编解码器、负载均衡策略。
- **示例代码**:
  ```java
  @Bean
  public Encoder feignEncoder() {
      return new JacksonEncoder();
  }
  ```

---

### 总结
`RestConfig` 类的核心目的是**统一管理 REST 相关的配置**,例如:
- 定义和定制 HTTP 客户端行为
- 统一数据格式转换规则
- 添加全局拦截逻辑
- 解决跨域问题
- 集成第三方 REST 工具

具体实现会根据项目需求调整,但核心逻辑是**通过 `@Bean` 方法向 Spring 容器注册组件**,确保这些组件在整个应用中生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值