已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
8小时前关门了。
Improve this question我正在开发一个网站,用于通过Spring控制IOT设备。我已经通过JPA开发了CRUD API,并通过NETTY框架声明了一些API,在项目中添加Spring安全之前,一切都很好。当我添加时,我意识到我的项目中的依赖关系之间存在一些冲突,我收到了无法访问javax.servlet过滤器。在做了一些研究之后,我明白我应该以一种与Spring Webflux而不是Spring Web相匹配的方式来实现Spring安全性。后来我更改了配置,并收到了一些不同的错误,他们说JPA不支持React式存储库。我做了更多的搜索,我发现问题是因为使用JPA,它不能支持React式应用程序。现在我正在寻找有两个独立配置的方法:1:WebBase部分,它的数据库是关系型的,使用JPA和Spring Security。2:TCP连接是物联网设备可访问的部分,它基于NETTY框架。
首先,我只有Netty依赖于springwebstarter
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.86.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided</scope>
</dependency>
之后,我配置了Spring Security,并收到无法访问javax.servlet过滤器,然后我迁移到webFlux配置
@Configuration
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
public class SecurityConfig {
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity HttpSecurity)
{
return HttpSecurity
.csrf().disable()
.formLogin().and()
.httpBasic().disable()
.authorizeExchange()
.pathMatchers("/","/login","/home").permitAll()
.pathMatchers("/Product").hasRole("ADMIN")
.anyExchange().authenticated()
.and().build();
}
}
如前所述,我不得不将一些API更改为ReactiveCrudRepository〈T,T〉,并发生了其他问题
1条答案
按热度按时间chy5wohz1#
首先,你不能两者都用。得自己决定;你将使用reactor(webflux with netty)或Web MVC。如果你使用reactor你就不能使用(但是,它也基本上是被禁止的)阻塞方法。JPA阻塞了线程,所以当然不被支持。
如果你使用RDBMS,非阻塞器的替代方案是R2 DBC,或者使用像
spring-boot-starter-mongodb-reactive
这样的React式组件。最重要的是:如果你使用被动的方式,避免任何形式的阻塞。