小编kaq*_*qao的帖子

如何使用SPQR获取生成的方案文件.graphqls?

我真的很喜欢SPQR轻松地将与现有系统集成的方式,我唯一想看的是.graphqls文件,因此我可以在GraphQL语法上学习更多。

有没有一种方法可以从集成SPQR注释的现有代码中生成方案文件?

为了提供一些代码,让我们使用GitHub站点上的相同代码

实体:

public class User {

    private String name;
    private Integer id;
    private Date registrationDate;

    @GraphQLQuery(name = "name", description = "A person's name")
    public String getName() {
        return name;
    }

    @GraphQLQuery
    public Integer getId() {
        return id;
    }

    @GraphQLQuery(name = "regDate", description = "Date of registration")
    public Date getRegistrationDate() {
        return registrationDate;
    }
}
Run Code Online (Sandbox Code Playgroud)

服务等级:

class UserService {

    @GraphQLQuery(name = "user")
    public User getById(@GraphQLArgument(name = "id") Integer id) {
      ...
    }
} …
Run Code Online (Sandbox Code Playgroud)

java graphql-java graphql-spqr

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

用动态生成的类替换反射调用

我有一个类似的界面:

public interface Getter {
    Object get(Params params);
}
Run Code Online (Sandbox Code Playgroud)

我使用对不同方法的反射调用来实现:

public class GetterImpl implements Getter {

    private final Object target;
    private final Method method; //doStuff method

    public GetterImpl(Object target, Method method) {
        this.target = target;
        this.method = method;
    }

    @Override
    public Object get(Params params) {
        //both the target and arguments depend on Params
        return method.invoke(chooseTarget(params), prepareArgs(params));
    }

    private Object chooseTarget(Params params) {
        if (params.getTargetOverride() != null) {
            return params.getTargetOverride();
        }
        return target;
    }

    private Object[] prepareArgs(Params params) {
        ...
    } …
Run Code Online (Sandbox Code Playgroud)

java code-generation bytecode java-bytecode-asm byte-buddy

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

如何获取查询/突变操作名称

我是Spring Boot + GraphQL的新手。我需要在我的控制器类中获取查询/更改操作名称。

目的:需要某些用户的特定突变/查询操作的最高权限。在这里,用户类型将作为请求标头传递并得到验证,并检查是否允许用户访问该操作。

@PostMapping
public ResponseEntity<Object> callGraphQLService(@RequestBody String query, @RequestHeader("user") String userName) {
    ExecutionResult result = graphService.getGraphQL().execute(ExecutionInput.newExecutionInput()
            .query(query)
            .context(userName)
            .build());
    return new ResponseEntity<>(result, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

建议任何有效的机制来执行针对特定查询/突变的授权

java graphql graphql-java

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

从多个线程同时使用同一个 FluxSink 是否安全

我知道 aPublisher不能同时发布,但是如果我使用Flux#create(FluxSink),我可以安全地FluxSink#next同时调用吗?

换句话说,即使FluxSink#next并发调用,Spring 是否具有确保事件正确串行发布的内部魔法?

public class FluxTest {

    private final Map<String, FluxSink<Item>> sinks = new ConcurrentHashMap<>();

    // Store a new sink for the given ID
    public void start(String id) {
        Flux.create(sink -> sinks.put(id, sink));
    }

    // Called from different threads
    public void publish(String id, Item item) {
        sinks.get(id).next(item); //<----------- Is this safe??
    }
}
Run Code Online (Sandbox Code Playgroud)

的声音,我喜欢这一段的官方指南中指出,上述确实是安全的,但我不是在我的理解非常有信心。

create 是一种更高级的 Flux 编程创建形式,适用于每轮多次发射,甚至来自多个线程。

java concurrency spring project-reactor reactive-streams

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

自定义 MessageConverter 在 Spring Boot 中不起作用

我想MessageConverter在 Spring Boot 中注册一个自定义,让我更好地控制消息的转换方式。我有一个 Spring Boot 2.1.7 Webflux 应用程序。

我创建了我的自定义转换器:

public class CustomConverter extends MappingJackson2HttpMessageConverter {
    ...
}
Run Code Online (Sandbox Code Playgroud)

并将其注册为:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
    return new CustomConverter();
}
Run Code Online (Sandbox Code Playgroud)

我还确认它是通过自动装配注册的,HttpMessageConverters并确认它在转换器列表中。然后,我实现了一些方法,我期待着这样调用canReadcanWritereadInternalwriteInternal他们并把断点。我的应用程序公开了一个 Rest 端点,该端点以 JSON 响应,并调用一个外部 Rest 服务,该服务发布 JSON 有效负载并接收 JSON 作为回报。

我在任何时候都看不到我的转换器正在被使用。我什至删除了所有其他转换器,只留下我自己的转换器,但仍然没有被调用。

我错过了什么吗?

spring-boot spring-webflux

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

从现有的pull请求中删除提交

我在Github上分叉了一个项目,做了一个提交,推到了我的分支并提出了拉取请求.一切都很好.

然后,我不断提交和推送不相关的东西,不知道所有这些都将被添加到我的拉取请求中.

我需要在我的fork中保存的更改(在不同的分支或其他内容中),但我必须从pull请求中删除除第一次提交之外的所有更改.我该怎么做呢?

git github pull-request

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