我在网上看了一些答案,但没有对我有帮助的.无法将筛选器添加到我的SpringBoot应用程序.指南说,如果我需要一个适用于所有终端的过滤器,我需要使用过滤器界面.我用过了,但什么都没变.我的依赖项有问题吗?

##### com.foo.core Main.java
package com.foo.core;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

}

##### com.foo.core AuthorizationRequiredFilter.java
package com.foo.core;

import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import javax.servlet.Filter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;

@Component
@Order(0)
public class AuthorizationRequiredFilter implements Filter {

    private static final Logger log = LoggerFactory.getLogger(AuthorizationRequiredFilter.class);

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        log.debug("doFilter() method is invoked");
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        System.out.println(httpRequest.getHeader("Authorization"));
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }

}


##### com.foo.core PingController .java
package com.foo.core.controllers;

import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

@RestController
public class PingController extends ResponseFormat {

    @RequestMapping(value = "ping", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public String ping() throws JSONException {
        JSONObject response = new JSONObject();
        response.put("message", "pong");
        return this.ok(response);
    }

}


####### pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.businessdynamics</groupId>
    <artifactId>core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>core</name>
    <description>Businessdynamics core</description>
    <properties>
        <java.version>20</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20190722</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

我用的是@SpringBootApplication,所以据我所知,组件扫描是不必要的.当I POST /ping-我收到服务器响应,但我的终端中没有日志(log).我做错了什么,为什么过滤器不工作?

推荐答案

Spring Boot 3从使用javax个包切换到使用jakarta个包和依赖项:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes

如果您实现jakarta.servlet.Filter类,则Spring应该能够加载滤镜.

Java相关问答推荐

在FML中删除关键帧动画

Android -如何修复Java.time.zone. ZoneRulesExcept:未知时区ID:Europe/Kyiv

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

当切换javaFX场景时,stage的大小正在Minimize

try 使用Java 9或更高版本对特殊对象图进行解析时出现NullPointerException

Java事件系统通用转换为有界通配符

工件部署期间出错[Tomcat 8.5.45]

在for—each循环中的AnimationTimer中的if语句'

匹配一组字符或另一组字符

如何在透视表中添加对计数列的筛选?

如何使用jooq更新记录?

未调用OnBackPressedCallback-Activitiy立即终止

活泼的一次判断成语,结果中等

在Java中比较同一多维数组的两个不同的字符串元素

在Spring Boot中使用咖啡因进行缓存-根据输出控制缓存

ControlsFX RangeSlider在方向垂直时滞后

获取月份';s在java中非UTC时区的开始时间和结束时间

message.acknowledge()没有';在使用Spring Boot在ActiveMQ中读取消息后,t将消息出列

如何在java中从以百分比表示的经过时间和结束日期中找到开始日期

移动二维数组的行