ZVVQ代理分享网

java框架常见问题答疑(java的一些框架)

作者:zvvq博客网
导读java 框架常见问题答疑针对 spring bean 循环依赖问题,可使用 @lazy 注解延迟 bean 注入。在 spring 中,通过 @validated 注解可对 rest 控制器请求参数进行验证。对于 hibernate 延迟加载 ,可使用

java 框架普遍问题答疑对于 spring bean 循环依赖难题,可使用 @lazy 注释延迟 bean 引入。在 spring 中,根据 @validated 注释可对 rest 控制器请求参数进行验证。针对 hibernate 延迟加载,可使用 fetchtype.lazy 当需要时候载入关系实体。在 spring webflux中,onerrormap 操作符适合于处理错误。在 spring cloud中,eureka 等服务发现架构适合于完成服务发现。

Java 架构普遍问题答疑

难题 1:怎样解决 Spring Bean 循环依赖?

@Autowired

privateServiceAserviceA;

@Autowired

privateServiceBserviceB;

解决方法:应用 @Lazy 注释,让 Spring 延迟引入 bean:

@Autowired

@Lazy

privateServiceAserviceA;

难题 2:在 Spring 中如何对 REST 控制板要求开展参数认证?

@PostMapping("/user")

publicUsercreateUser(@RequestBodyUseruser){

//...

}

解决方法:应用 JSR-303 规范的 @Validated 注释:

@PostMapping("/user")

publicUsercreateUser(@RequestBody @Validated Useruser){

//...

}

难题 3:怎么使用 Hibernate 延迟加载关系实体?

classUser{

//...

@OneToMany(mappedBy="user")

privateListorders;

}

解决方法:应用 FetchType.LAZY,仅在必须时候载入关系实体:

@OneToMany(mappedBy="user",fetch= FetchType.LAZY)

privateListorders;

实战案例

下列是一个基于 Spring Boot的实例应用软件,它展现了怎么使用 Spring DataJPA、Spring Security 和 Hibernate 来构建一个 REST API:

@SpringBootApplication

publicclassApplication{

publicstaticvoidmain(String[]args){

SpringApplication.run(Application.class,args);

}

}

@Entity

classUser{

//...

}

interfaceUserRepositoryextendsJpaRepository{}

@RestController

@RequestMapping("/api/users")

classUserController{

privatefinalUserRepositoryuserRepository;

//...

}

难题 4:在 Spring Webflux运用中怎样处理错误?

@PostMapping("/user")

publicMonocreateUser(@RequestBodyUseruser){

//...

}

解决方法:应用 onErrorMap 操作符将错误映射到适度的回应:

@PostMapping("/user")

publicMonocreateUser(@RequestBodyUseruser){

returnuserRepository.save(user)

.onErrorMap(e->newRuntimeException("Errorsavinguser"));

}

难题 5:在 Spring Cloud中如何做到服务发现?

解决方法:应用 Eureka 等服务发现架构:

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

以上就是java架构普遍问题答疑的详细内容,大量请关注其他类似文章!