小编Eka*_*ina的帖子

“文本/事件流”和“应用程序/流+json”有什么区别

@GetMapping(path = "/cars", produces = "text/event-stream")
public Flux<Car> getCarStream() {
    System.out.println("application/stream+json");
    return this.repository.findCarsBy().log();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码和下面的有什么区别:

@GetMapping(path = "/cars", produces = "application/stream+json")
public Flux<Car> getCarStream() {
    System.out.println("application/stream+json");
    return this.repository.findCarsBy().log();
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现了矛盾的信息:有人说它们都表示服务器发送的事件,而其他人则表示存在差异。

java project-reactor spring-webflux

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

我应该总是关闭BufferedReader吗?

这是一行将文件读入List:

List<String> lines =
    new BufferedReader(
        new InputStreamReader(classLoader.getResourceAsStream(fileName)))
            .lines()
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

这是正确的还是应该将BufferedReader变量分配给变量以便以后关闭它?

java bufferedreader

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

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

CriteriaBuilder 的literal() 方法有什么用?

文档说:

为文字创建表达式

在代码中我看到了cb.literal()的此类用法:

  Expression<String> wordLiteral = cb.literal(word);
  predicates.add(cb.like(namePath, wordLiteral));
Run Code Online (Sandbox Code Playgroud)

但如果这里省略wordLiteral并使用word代替,则不会发生任何变化。那么这个方法是做什么用的呢?

jpa criteria-api

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

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

如何在 Spring 中 ExpiredJwtException 时返回 401 而不是 500

您能帮助我在公开 REST 服务的 Spring Boot 应用程序中进行安全配置吗:我有JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilterJWTAuthorizationFilter extends BasicAuthenticationFilter以及以下configure方法WebSecurityConfig extends WebSecurityConfigurerAdapter

protected void configure(HttpSecurity http) throws Exception {

    http.cors().and().csrf().disable().authorizeRequests().antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
                .anyRequest().authenticated().and().addFilter(new JWTAuthenticationFilter(authenticationManager()))
                .addFilter(new JWTAuthorizationFilter(authenticationManager()))
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }
Run Code Online (Sandbox Code Playgroud)

现在,当 Jwt 令牌过期时,会返回错误 500。如何以及在哪里让它返回 401?

spring-security

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

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

如何将计划作业实现为微服务

我有一个 Spring Boot 应用程序,它为 Angular Web 界面提供 REST API。

此 Spring Boot 应用程序中当前还有一个预定作业。这项工作是用一些实体填充数据库,比如说书籍(它们取自外部来源,更具体地说,取自网站)。我想将这项工作放入一个单独的微服务中。

问题是微服务是否应该直接使用共享数据库或通过 REST 访问主应用程序。在第一种情况下,一些(如果不是全部)模型和服务将被共享,这看起来不太好。但在第二种情况下,每次对数据库的访问都将通过第一个应用程序。这可以吗?

spring-boot microservices

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

REST API 中将项目添加到集合的正确方法是什么 - POST 或 PUT

应用程序中有一些users有偏好的内容 - 最喜欢的作者。用户可以更改此列表。作者位于实体authors的集合中User

@Entity
public class User {
    @Id

     ....
    @ElementCollection
    private List<String> authors=new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

用户可以编辑他的个人资料并通过添加或删除作者来更改此列表。一方面,添加或删除作者意味着只需编辑个人资料,这就是我目前使用以下PUT方法的原因:

@PutMapping("/api/profile/author/add")
@PutMapping("/api/profile/author/remove")
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否正确。另一种变体是在用户添加和删除项目时使用POST和方法:DELETE

@PostMapping("/api/profile/author/add")
@DeleteMapping("/api/profile/author/remove")
Run Code Online (Sandbox Code Playgroud)

那么什么是正确的变体,原因是什么?

rest spring-mvc spring-data-jpa

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