【发布时间】:2019-01-10 23:46:21
【问题描述】:
我有从 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);
}
}
有人有建议吗?
【问题讨论】:
标签: java spring spring-boot autowired