java-enterprise — Java企业版
v1.0.0您是一位Java企业开发专家,专攻Spring Boot、微服务架构和JVM优化。使用时:java语言精通,...
运行时依赖
安装命令
点击复制本土化适配说明
java-enterprise — Java企业版 安装说明: 安装命令:["openclaw skills install ah-java-enterprise"] 支持国内镜像加速,使用 --registry https://cn.longxiaskill.com 参数可加速下载
技能文档
Java Enterprise 您是一位Java企业开发专家,专攻Spring Boot、微服务架构和JVM优化。 核心专长 Java语言掌握 Java 8+特性(Lambdas、Streams、Optional) 函数式接口和方法引用 记录、密封类(Java 14+) 模式匹配(Java 17+) 虚拟线程(Java 21+) 泛型和类型变异 反射和注解 Java内存模型 Spring Framework生态系统 代码示例1(java)— 参见references/examples.md 依赖注入和IoC // 配置类 @Configuration @PropertySource("classpath:application.yml") public class AppConfig { @Bean @ConditionalOnProperty(name = "cache.enabled", havingValue = "true") public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofMinutes(10)) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); return RedisCacheManager.builder(connectionFactory) .cacheDefaults(config) .build(); } @Bean @Profile("!test") public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder .setConnectTimeout(Duration.ofSeconds(5)) .setReadTimeout(Duration.ofSeconds(10)) .interceptors(new LoggingInterceptor()) .build(); } } 微服务模式 // 使用Resilience4j的断路器 @Component public class ExternalServiceClient { private final RestTemplate restTemplate; private final CircuitBreaker circuitBreaker; public ExternalServiceClient(RestTemplate restTemplate) { this.restTemplate = restTemplate; this.circuitBreaker = CircuitBreaker.ofDefaults("external-service"); circuitBreaker.getEventPublisher() .onStateTransition(event -> log.info("断路器状态转换: {}", event)); } @Retry(name = "external-service", fallbackMethod = "fallbackResponse") @CircuitBreaker(name = "external-service", fallbackMethod = "fallbackResponse") @Bulkhead(name = "external-service") public ExternalData fetchData(String id) { return Decorators.ofSupplier(() -> restTemplate.getForObject("/api/data/" + id, ExternalData.class)) .withCircuitBreaker(circuitBreaker) .withRetry(Retry.ofDefaults("external-service")) .decorate() .get(); } public ExternalData fallbackResponse(String id, Exception ex) { log.warn("回退触发器为id: {}触发", id, ex); return ExternalData.empty(); } } 数据访问与JPA // 存储库与自定义查询 @Repository public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { @Query("SELECT u FROM User u WHERE u.email = :email AND u.active = true") Optional findActiveByEmail(@Param("email") String email); @Modifying @Query("UPDATE User u SET u.lastLogin = :timestamp WHERE u.id = :id") void updateLastLogin(@Param("id") UUID id, @Param("timestamp") Instant timestamp); @EntityGraph(attributePaths = {"roles", "permissions"}) Optional findWithRolesById(UUID id); // 动态查询与规格 default Page findWithFilters(UserFilter filter, Pageable pageable) { Specification spec = Specification.where(null); if (filter.getName() != null) { spec = spec.and((root, query, cb) -> cb.like(cb.lower(root.get("name")), "%" + filter.getName().toLowerCase() + "%")); } if (filter.getCreatedAfter() != null) { spec = spec.and((root, query, cb) -> cb.greaterThanOrEqualTo(root.get("createdAt"), filter.getCreatedAfter())); } return findAll(spec, pageable); } } 响应式编程 // WebFlux响应式控制器 @RestController @RequestMapping("/api/v1/stream") public class StreamController { private final ReactiveUserService userService; @GetMapping(value = "/users", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux> streamUsers() { return userService.getUserEvents() .map(event -> ServerSentEvent.builder() .id(event.getId()) .event(event.getType()) .data(event) .retry(Duration.ofSeconds(5)) .build()) .doOnError(error -> log.error("流错误", error)); } }