我有从spring应用程序迁移的spring boot应用程序 . 一切正常 . 我决定添加一些与SessionRegistry相关的新功能 . 我发现sessionRegistry无法自动连接 . 它只显示无法自动装配 . 找不到'SessionRegistry'类型的bean . 我认为它可能是想法问题,并尝试使用此编译问题运行项目但应用程序无法启动:
应用程序未能启动
描述:
SessionUtils中构造函数的参数0需要一个无法找到的类型为'org.springframework.security.core.session.SessionRegistry'的bean .
行动:
考虑在配置中定义类型为'org.springframework.security.core.session.SessionRegistry'的bean .
这是我尝试使用SessionRegistry的类的示例:
import org.springframework.security.core.session.SessionRegistry;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.session.SessionInformation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class SessionUtils {
private final SessionRegistry sessionRegistry;
@Autowired
public SessionUtils(SessionRegistry sessionRegistry) {
this.sessionRegistry = sessionRegistry;
}
public void expireUserSessions(String username) {
for (Object principal : sessionRegistry.getAllPrincipals()) {
if (principal instanceof User) {
UserDetails userDetails = (UserDetails) principal;
if (userDetails.getUsername().equals(username)) {
for (SessionInformation information : sessionRegistry.getAllSessions(userDetails, true)) {
information.expireNow();
}
}
}
}
}
}
我试图添加@ComponentScan,但它没有帮助 . 我的Application.class代码:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
/**
* Main class for Spring Boot
*/
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
FreeMarkerAutoConfiguration.class, HttpEncodingAutoConfiguration.class, WebMvcAutoConfiguration.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
有没有人有建议?
1 回答
您需要在
configuration
类中添加bean:您可以将它保存在Application类中 .