Token导航 LogoToken导航TokenDH.com
研究检索external-servicegithub未标认证来源可访问许可证需确认审计提醒

spring-web弹簧网

Agent Skill

用于辅助 Java 项目开发、面向对象设计、Spring 生态、Maven 或 Gradle 依赖和后端工程实践。它适合让 Agent 分析类结构、设计接口、整理服务分层、生成测试或检查常见代码坏味道。使用时需要结合项目已有架构、包结构和依赖版本,不应只按通用教程改代码;涉及数据库、事务、并发或框架配置时,应先确认运行环境和回归测试范围。

总安装

576

周安装

24

GitHub Stars

12

下载量

192
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:spring-web(弹簧网)
来源仓库:https://github.com/claude-dev-suite/claude-dev-suite
仓库路径:skills/spring-web
安装命令:
npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill spring-web
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill spring-web

简介

Spring Web MVC 基础技能,提供 Servlet 容器内建 Web 服务能力。

  • 适用于传统请求-响应模式的 Web 应用开发。
  • 支持 HandlerMapping、ViewResolver 和拦截器链定制扩展。
  • 需合理配置 DispatcherServlet 映射路径和静态资源放行规则。
  • 技能来源为 claude-dev-suite 公共代码仓库。

SKILL.md

Spring Web MVC Advanced

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: spring-web for comprehensive documentation.

Quick Start

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class ApiController {

    private final RestClient restClient;

    @GetMapping("/proxy/{id}")
    public ResponseEntity<Resource> proxyRequest(@PathVariable Long id) {
        return restClient.get()
            .uri("/external/resource/{id}", id)
            .retrieve()
            .toEntity(Resource.class);
    }
}

@Configuration
public class RestClientConfig {

    @Bean
    public RestClient restClient(RestClient.Builder builder) {
        return builder
            .baseUrl("https://api.external.com")
            .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
            .connectTimeout(Duration.ofSeconds(5))
            .readTimeout(Duration.ofSeconds(30))
            .build();
    }
}

RestClient Essentials (Spring 6.1+)

RestClient is the new synchronous HTTP client replacing RestTemplate.

@Service
@RequiredArgsConstructor
public class UserApiClient {

    private final RestClient restClient;

    // GET
    public UserDto getUser(Long id) {
        return restClient.get()
            .uri("/users/{id}", id)
            .retrieve()
            .body(UserDto.class);
    }

    // POST
    public UserDto createUser(CreateUserRequest request) {
        return restClient.post()
            .uri("/users")
            .body(request)
            .retrieve()
            .body(UserDto.class);
    }

    // With error handling
    public UserDto getUserSafe(Long id) {
        return restClient.get()
            .uri("/users/{id}", id)
            .retrieve()
            .onStatus(HttpStatusCode::is4xxClientError, (req, res) -> {
                throw new ResourceNotFoundException("User not found: " + id);
            })
            .body(UserDto.class);
    }
}
Full Reference: See http-clients.md for complete RestClient and WebClient documentation.

ResponseEntity Quick Patterns

@RestController
@RequestMapping("/api/v1/users")
public class UserController {

    // Created with Location
    @PostMapping
    public ResponseEntity<UserResponse> create(
            @Valid @RequestBody CreateUserRequest req,
            UriComponentsBuilder uriBuilder) {

        UserResponse created = service.create(req);
        URI location = uriBuilder.path("/api/v1/users/{id}")
            .buildAndExpand(created.getId()).toUri();

        return ResponseEntity.created(location).body(created);
    }

    // With ETag
    @GetMapping("/{id}")
    public ResponseEntity<UserResponse> get(@PathVariable Long id) {
        UserResponse user = service.findById(id);
        return ResponseEntity.ok()
            .eTag("\"" + user.getVersion() + "\"")
            .cacheControl(CacheControl.maxAge(60, TimeUnit.SECONDS))
            .body(user);
    }

    // No Content
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> delete(@PathVariable Long id) {
        service.delete(id);
        return ResponseEntity.noContent().build();
    }
}
Full Reference: See patterns.md for ResponseEntity, Content Negotiation, and Streaming.

File Upload/Download Quick Start

// Upload
@PostMapping("/upload")
public ResponseEntity<FileResponse> upload(@RequestParam("file") MultipartFile file) {
    String fileName = storageService.store(file);
    return ResponseEntity.ok(new FileResponse(fileName, file.getSize()));
}

// Download
@GetMapping("/download/{fileName}")
public ResponseEntity<Resource> download(@PathVariable String fileName) {
    Resource resource = storageService.loadAsResource(fileName);
    return ResponseEntity.ok()
        .contentType(MediaType.APPLICATION_OCTET_STREAM)
        .header(HttpHeaders.CONTENT_DISPOSITION,
            "attachment; filename=\"" + fileName + "\"")
        .body(resource);
}
Full Reference: See file-handling.md for complete file operations.

Interceptors Quick Start

@Slf4j
@Component
public class LoggingInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,
                            HttpServletResponse response, Object handler) {
        MDC.put("requestId", UUID.randomUUID().toString());
        request.setAttribute("startTime", System.currentTimeMillis());
        log.info("==> {} {}", request.getMethod(), request.getRequestURI());
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request,
                               HttpServletResponse response,
                               Object handler, Exception ex) {
        long duration = System.currentTimeMillis() -
            (Long) request.getAttribute("startTime");
        log.info("<== {} ({} ms)", response.getStatus(), duration);
        MDC.clear();
    }
}

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loggingInterceptor).addPathPatterns("/api/**");
    }
}
Full Reference: See advanced.md for Interceptors, Argument Resolvers, Exception Handling, and Testing.

Best Practices

DoDon't
Use RestClient for sync calls (Spring 3.2+)Use deprecated RestTemplate
Configure explicit timeoutsRely on default timeouts
Implement retry with exponential backoffRetry immediately without delay
Use interceptors for centralized loggingLog in each method
Wrap responses in ResponseEntityReturn raw objects

When NOT to Use This Skill

  • Reactive applications - Use spring-webflux skill
  • Basic REST controllers - Use spring-rest skill
  • WebSocket communication - Use spring-websocket skill
  • GraphQL APIs - Use spring-graphql skill

Anti-Patterns

Anti-PatternProblemSolution
Using RestTemplateDeprecated, not type-safeUse RestClient (sync) or WebClient (async)
No timeout configurationRequests hang indefinitelyConfigure connect/read timeout
Memory leak with streamsStream not closedUse try-with-resources
N+1 HTTP callsCalls in loopUse batch endpoints or parallel calls
Blocking in WebFlux.block() in reactive stackKeep chain reactive

Quick Troubleshooting

ProblemDiagnosticFix
Connection timeoutCheck network/firewallConfigure proper timeout values
SSL handshake failsCheck certificatesConfigure SSLContext properly
Response not mappedCheck Content-TypeConfigure message converters
Interceptor not calledCheck registrationVerify interceptor order
File upload failsCheck size limitsConfigure multipart settings

Reference Files

FileContent
http-clients.mdRestClient, WebClient, Interceptors
patterns.mdResponseEntity, Content Negotiation, Streaming
file-handling.mdFile Upload, Download, Storage Service
advanced.mdArgument Resolvers, HandlerInterceptors, Exception Handling, Testing

External Documentation

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34%
按下载量换算65

Claude

30.27%
按下载量换算58

Cursor

19.75%
按下载量换算38

Gemini CLI

8.47%
按下载量换算16

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

external-service

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills