NullPointerException für Springboot @Autowired-Komponente im Interceptor [Duplikat]
Posted: 20 Jan 2025, 17:45
Ich habe eine Komponente, deren Hauptaufgabe darin besteht, eine Jedis-Instanz zurückzugeben, und sie sieht wie folgt aus:
Ich verwende dann die Jedis-Instanz, um einige Dinge im PreHandler meines Interceptors zu erledigen:
Aber ich erhalte eine NullPointerException, wenn ich jc.getJedis() aufrufe und verstehe nicht, warum das passiert.
Auf a Verwandter Hinweis: Ich habe in einem Unit-Test so ziemlich genau das Gleiche gemacht und es läuft einwandfrei:
So habe ich den Interceptor zur Registrierung hinzugefügt:
Wenn jemand weiß, wie man das Problem beheben kann, lassen Sie es mich bitte wissen. Vielen Dank!
Code: Select all
@Component
public class JedisConfig {
private Jedis jedis;
public JedisConfig() {
jedis = new Jedis("localhost", 6379);
}
public Jedis getJedis() {return jedis;}
}
Code: Select all
public class AuthInterceptor implements HandlerInterceptor {
@Autowired
private JedisConfig jc;
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Jedis jedis = jc.getJedis();
// do some other stuff with jedis below
}
}
Auf a Verwandter Hinweis: Ich habe in einem Unit-Test so ziemlich genau das Gleiche gemacht und es läuft einwandfrei:
Code: Select all
@Autowired
private JedisConfig jc;
@Test
public void testJedis(){
Jedis jedis = jc.getJedis();
jedis.set("user", "role");
assertThat(jedis.get("user"),is("role"));
}
Code: Select all
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor())
.addPathPatterns("/user/roleChange");
}
}