小编fal*_*con的帖子

自动装入JPA转换器

我在我的春季启动应用程序中使用自定义的ObjectMapper.我还将JPA转换器用于多个字段,这些字段在DB中存储为JSON字符串.我不知道如何将我的自定义对象映射器自动装入我的转换器.

@Convert(converter=AddressConverter.class)
private Address address;
Run Code Online (Sandbox Code Playgroud)

我的AddressConverter是

class AddressConverter implements AttributeConverter<Address, String> {

        @Autowire
        ObjectMapper objectMapper; //How to do this?
        .....
        .....
   }
Run Code Online (Sandbox Code Playgroud)

怎么自动ObjectMapper装入AddressConverter?有没有办法用Spring AOP做到这一点?

spring jpa jackson spring-data-jpa spring-boot

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

以非交互模式安装 npm 包

我正在尝试在我的 Docker 映像中安装 highcharts 服务器。但是 npm install 命令在安装时会向用户提出几个问题。我需要它继续使用默认值(我可以在 npm install 命令中提供)。如何实现这一目标?

在这种情况下,问题是:

Agree to the license terms? y/n:  (no) y
Select your Highcharts version (e.g. 4.2.2)::  (latest)
Include Maps? (requires Maps license):  (no)
Enable styled mode? (requires Highcharts/Highstock 5 license):  (no)
Run Code Online (Sandbox Code Playgroud)

highcharts node.js npm

8
推荐指数
0
解决办法
4644
查看次数

如何使用 Lettuce Java 库持续监听 Redis 流

我正在尝试监听 Redis 流并在消息到达时对其进行处理。我正在使用异步命令,我希望消息被推送而不是被拉取。所以我认为不需要 while 循环。但下面的代码似乎不起作用。

public static void main(String[] args) throws InterruptedException {

    RedisClient redisClient = RedisClient
        .create("redis://localhost:6379/");
    StatefulRedisConnection<String, String> connection
        = redisClient.connect();
    RedisAsyncCommands commands = connection.async();
    commands.xgroupCreate(StreamOffset.latest("my-stream"), "G1", new XGroupCreateArgs());
    commands
        .xreadgroup(Consumer.from("G1", "c1"), StreamOffset.lastConsumed("my-stream"))
        .thenAccept(System.out::println);

    Thread.currentThread().join();
}
Run Code Online (Sandbox Code Playgroud)

它只打印程序启动时流中的所有内容,而不打印程序运行时添加的消息。是否应该为新添加到流中的每条消息调用回调?

java lettuce spring-data-redis spring-data-redis-reactive redis-streams

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

Spring重试在RestController中不起作用

我正在尝试弹簧重试,我面临一个奇怪的问题.当我在Rest Controller中的方法上使用重试注释时,重试不起作用.但是,如果我将该方法移动到单独的服务类,它就可以工作.以下代码不起作用:

@RestController
public class HelloController {

    @RequestMapping(value = "/hello")
    public String hello() {
        return getInfo();
    }

    @Retryable(RuntimeException.class)
    public String getInfo() {
        Random random = new Random();
        int r = random.nextInt(2);
        if (r == 1) {
            throw new RuntimeException();
        } else {
            return "Success";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但以下是:

@RestController
public class HelloController {

    @Autowired
    private SomeService service;

    @RequestMapping(value = "/hello")
    public String hello() {
        String result = service.getInfo();
        return result;
    }
}

@Service
public class SomeService {

    @Retryable(RuntimeException.class)
    public String …
Run Code Online (Sandbox Code Playgroud)

spring spring-retry

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

异步任务的HTTP状态代码

我正在实现一个REST API,它涉及在服务器上创建一个对象.对象创建涉及多个步骤,可能需要一段时间.我不希望用户等待它.我只返回202响应,其中包含客户端请求的唯一请求ID,并在服务器上启动一些线程来创建对象.客户应该在将来检查请求是否完成.流程如下:

  1. 客户端POST对象.
  2. 服务器使用带有Location标头的202 Accepted代码进行响应 /my-app/<reqId>
  3. 客户端进行GET操作 /my-app/<reqId>

现在,在第三步,这些事情可能会发生:

  1. 对象创建仍在进行中(客户端应该在一段时间后再次检查).
  2. 发生了一些错误.
  3. 对象已成功创建.

现在我的API应该/my-app/<reqId>响应上述三种情况的http代码?

rest http http-status-codes http-headers

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

使用 Jackson 序列化时有条件地跳过对象

我有一个像这样的课程

interface IHideable {
   boolean isHidden();
}

class Address implements IHideable {
    private String city;
    private String street;
    private boolean hidden;
}

class PersonalInfo implements IHideable {
    private String name;
    private int age;
    private boolean hidden;
}
Run Code Online (Sandbox Code Playgroud)

我想在我的网络服务中序列化 IHideable 列表;但过滤掉隐藏字段设置为 true 的任何对象。

基本上给出了一个对象列表,例如

[
{'city 1','street 1',false},
{'city 2','street 2',true},
{'city 3','street 3',false}
]
Run Code Online (Sandbox Code Playgroud)

我想要的输出为

[
  {
    city:'city 1',
    street:'street 1'
  },
  {
    city:'city 3',
    street:'street 3'
  }
]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下实现

class ItemSerializer extends JsonSerializer<IHideable> {  
    @Override
    public void serialize(IHideable value, …
Run Code Online (Sandbox Code Playgroud)

java serialization json jackson

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

域对象中的存储库

我看过很多关于这个话题的讨论,但我无法得到令人信服的答案.一般建议不要在域对象中包含存储库.聚合根怎么样?赋予根操纵组合对象的责任是不是正确的?例如,我有一个处理发票的微服务.发票是具有不同产品的聚合根.此服务无需提供有关各个产品的详细信息.我有2个表,一个用于存储发票详细信息,另一个用于存储这些发票的产品.我有两个与表对应的存储库.我在发票域对象中注入了产品存储库.这样做是不对的?

domain-driven-design microservices

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

以实例变量和参数为键的Spring缓存

我正在使用 ehcache 缓存方法结果。键必须是成员对象和方法参数的组合。我的课程看起来像:

Class A {

private B b;

@Cacheable(value="someCache",key="some key based on B and C")
public Result getResult(C c){
......
}
Run Code Online (Sandbox Code Playgroud)

我需要基于 B 和 C 的密钥。我提到了https://code.google.com/p/ehcache-spring-annotations/issues/detail?id=69但他们没有指定如何包含方法参数在密钥生成中。有人可以帮我解决这个问题吗?

java spring ehcache spring-cache

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