我有从spring应用程序迁移过来的spring引导应用程序。一切正常。我决定添加一些与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,但没有帮助。
我的应用程序.类代码:
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);
}
}
有人有什么建议吗?