小编Pra*_*r D的帖子

Spring MVC中@RequestParam的自定义转换器

我得到一个加密的String作为查询参数到Spring休息控制器方法.

我希望在它到达方法之前解密字符串,基于一些注释(@Decrypt比如下面的话)

@RequestMapping(value = "/customer", method = RequestMethod.GET)
public String getAppointmentsForDay(@RequestParam("secret") @Decrypt String customerSecret) {
    System.out.println(customerSecret);  // Needs to be a decrypted value.
   ...
}
Run Code Online (Sandbox Code Playgroud)

Formatter在这个用例中,自定义是正确的方法吗?

或者我应该使用自定义HandlerMethodArgumentResolver

spring spring-mvc spring-boot

9
推荐指数
2
解决办法
3416
查看次数

spring MVC控制器版本控制

我有一个弹簧启动应用程序,它有一个弹簧MVC控制器.我正在尝试使用Accept标头对我的休息api进行版本控制.

以下是我的控制器的样子

RestController
@RequestMapping(value = "/private/")
public class AppleController {

  private final AppleService appleService;

  public AppleController(AppleService appleService) {
    this.appleService = appleService;
  }

  @GetMapping(value = "apples/{id}", produces = "application/json; v=1.0",
      headers = "Accept=application/json; v=1.0")
  public ResponseEntity getByappleId(@PathVariable("id") Long appleId) {
    System.out.println("version1");

    GetByappleIdResponse response = appleService.findByappleId(appleId);

    return new ResponseEntity<>(response, HttpStatus.OK);
  }



  @GetMapping(value = "apples/{id}", produces = "application/json; v=2.0",
      headers = "Accept=application/json; v=2.0")
  public ResponseEntity getByappleId2(@PathVariable("id") Long appleId) {
    System.out.println("version2");
    GetByappleIdResponse response = appleService.findByappleId2(appleId);
    return new ResponseEntity<>(response, HttpStatus.OK);
  }
Run Code Online (Sandbox Code Playgroud)

无论我在调用API时在Accept头中传递的版本是否始终调用"getByappleId"方法,因此仅返回版本1响应.

我的控制器有什么问题吗?

spring-mvc spring-boot spring-restcontroller

7
推荐指数
1
解决办法
1133
查看次数

TransactionRequiredException:使用JPAItemWriter时没有事务正在进行中

我面临一个奇怪的问题,一个应用程序是一个弹簧启动应用程序.

细节在这里:

该应用程序有一个弹簧批处理作业,它使用JpaItemWriter执行对数据库的写入.

此外,应用程序配置为使用休眠

ItemWriter配置如下:

 @Bean(name = "itemWriter")
  @StepScope
  public ItemWriter<Record> itemWriter() {
      JpaItemWriter<Record> itemWriter = new JpaItemWriter<>();
      itemWriter.setEntityManagerFactory(emf);
      return itemWriter;
  }
Run Code Online (Sandbox Code Playgroud)

批量工作过去很好,但最近我们将Jenkins升级为Jenkins(2.73.3).之后,使用这个新的Jenkins构建和部署的代码在运行相同的批处理作业时开始抛出以下错误:

2017-12-03 16:09:44.720 DEBUG - testservice -  - jobLauncher-3 - org.springframework.batch.item.database.JpaItemWriter:97 - Writing to JPA with 4 items.
2017-12-03 16:09:44.733 DEBUG - testservice -  - jobLauncher-3 - org.springframework.batch.item.database.JpaItemWriter:109 - 4 entities merged.
2017-12-03 16:09:44.733 DEBUG - testservice -  - jobLauncher-3 - org.springframework.batch.item.database.JpaItemWriter:110 - 0 entities found in persistence context.
2017-12-03 16:09:44.743 WARN  - testservice -  - jobLauncher-3 - …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-batch spring-data spring-data-jpa spring-boot

7
推荐指数
1
解决办法
693
查看次数

Spring Boot应用程序日志级别

我想更改正在运行的Spring Boot应用程序的日志级别.

是否可以在运行时更改日志级别?现在我在我的jar中有记录器配置.

logback spring-boot

6
推荐指数
1
解决办法
8707
查看次数

在 kafka 中使用消息执行批处理协调所需的建议

我正在使用微服务架构开发批处理。整个批处理过程中需要执行的一系列步骤将由不同的微服务执行。Kafka 被用作消息总线,所有微服务都使用 kafka 进行交互。

在批处理过程中,首先微服务从数据库中拉取数据,然后为拉取的每条记录创建一条消息,第二个微服务处理该消息,然后再次将消息发布到总线。

在一天结束时,我们需要对第一个微服务发布的消息与最后一个微服务发布的消息进行协调。

现在尝试使用另一个使用 spring 集成 kafka 读取来自这两个主题的消息的微服务来执行协调,但由于以下原因,这种方法似乎很复杂:1) 开始主题和结束主题将使用我的多个批处理。所以我最终会在为每个进程执行对帐时一遍又一遍地阅读相同的消息。2) 不确定如何聚合从这两个主题读取的消息,然后进行协调?3) 如果我需要重新进行对账,会遇到什么挑战?

Kafka 是否意味着用作存储来放置可用于对帐的消息/数据,或者我需要寻找其他一些我需要推送可用于执行对帐的消息的存储?如果是这样,我可以在这种情况下使用什么样的商店?

任何指针都会有帮助吗?

spring-integration apache-kafka kafka-consumer-api

5
推荐指数
0
解决办法
1363
查看次数

Spring集成是否支持AMQP与ActiveMq

我是MOM的新手.

我想从我的应用程序使用AMQP连接到ActiveMQ.另外,我想使用Spring Integration连接到ActiveMq.

我看到了针对rabbitMQ的AMQP示例,但我无法找到ActiveMq的任何示例.

是不是可以使用Spring Integration?

activemq-classic amqp spring-integration

3
推荐指数
1
解决办法
1853
查看次数

Hibernate 验证器 @NotEmpty 不工作 Spring Boot 和 Jackson

我有以下类,其中包含带有 @NotEmpty 注释的 errorRequests。

public class ErrorsRequests implements Serializable {


  private static final long serialVersionUID = -727308651190295062L;

  private String applicationName;

  @NotEmpty
  @Valid
  @JsonProperty("errors")
  private List<ErrorsRequest> errorRequests;
Run Code Online (Sandbox Code Playgroud)

我的控制器如下所示:

 @Autowired
  @Qualifier("errorStreamValidator")
  private Validator errorStreamValidator;

  @RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE,
      consumes = MediaType.APPLICATION_JSON_VALUE)
  public ResponseEntity<Void> errorReporting(@NotNull @PathVariable String applicationName,
      @Valid @NotNull @RequestBody ErrorsRequests errorsRequests, BindingResult results) {
Run Code Online (Sandbox Code Playgroud)

我的类路径中有所需的休眠验证器类。

当我输入以下 JSON 时:

{
"errorss": [ 
  ]
}
Run Code Online (Sandbox Code Playgroud)

@NotEmpty 验证根本没有启动。Hibernate 验证仅在 json 中包含错误元素时才有效,如下所示

 {
    "errors": [ 
      ]
    }
Run Code Online (Sandbox Code Playgroud)

我可以让第一个案例也起作用吗?

spring-mvc hibernate-validator jackson spring-restcontroller

2
推荐指数
1
解决办法
1万
查看次数

zookeeper.connection.timeout.ms的最大值

现在,我们正在AWS EC2服务器中运行kafka,而zookeeper也正在单独的EC2实例上运行。

我们已经为kafka和zookeeper创建了一个服务(系统单元),以确保在服务器重新启动时它们已启动。

问题是,有时动物园管理员的服务开始并不晚,而卡夫卡经纪人到那时就被终止了。

因此,为了解决此问题,我们计划在代理端将zookeeper.connection.timeout.ms增加到一些较高的数字,例如10分钟。这是一个好方法吗?

在zookeeper中增加zookeeper.connection.timeout.ms超时有什么大小影响?

apache-kafka apache-zookeeper

2
推荐指数
1
解决办法
3435
查看次数

设计问题:聚合来自多个微服务的数据并在 UI 中显示的最佳方式

我们有一个场景,我们需要聚合来自多个服务的数据并在 UI 中显示。当前场景是当代理登录时,我们需要显示分配给该代理的案例。案例信息需要从多个微服务聚合。一次将有大约 1000 个案例分配给座席,所有需求都将显示给座席,以便他可以根据特定案例数据进行排序。

在这种情况下显示数据的最佳方法是什么?我们应该为每个案例对多个服务进行 API 调用并聚合和显示吗?或者有更好的方法来实现这一点。

rest design-patterns microservices

1
推荐指数
1
解决办法
891
查看次数