集成Spring Webflux和Mvc [已关闭]

sqxo8psd  于 2023-01-26  发布在  Spring
关注(0)|答案(1)|浏览(149)

已关闭。此问题需要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〉,并发生了其他问题

chy5wohz

chy5wohz1#

首先,你不能两者都用。得自己决定;你将使用reactor(webflux with netty)或Web MVC。如果你使用reactor你就不能使用(但是,它也基本上是被禁止的)阻塞方法。JPA阻塞了线程,所以当然不被支持。
如果你使用RDBMS,非阻塞器的替代方案是R2 DBC,或者使用像spring-boot-starter-mongodb-reactive这样的React式组件。
最重要的是:如果你使用被动的方式,避免任何形式的阻塞。

相关问题