上下文:用Java Spring Boot 1.5.x编写的WebApplication。
问题:每次创建新的会话时,我想重新加载我的授权设置。因此,我认为用@SessionScope
注释bean工厂方法是有意义的。认证类被注入到我的@EnableWebSecurity
类中,该类是单例作用域的。该文档指出:
另一个关键限制是,查找方法不适用于工厂方法,特别是不适用于配置类中的@Bean方法,因为在这种情况下容器不负责创建实例,因此无法创建运行时生成的子类。
我的问题:我是唯一的方法注射吗?参见method injection
Springs文档明确指出,方法注入不是一个干净的解决方案,因此我想在这里问。
@Configuration
public class AuthoritiesConfig {
@Autowired
Utilities utilities;
@Bean
@SessionScope
Authorities projectsAuth() {
ProjectsYaml py = utilities.bindYaml();
return new Authorities(py.getUsers());
}
}
注射
@EnableWebSecurity
public class SecurityConfig {
@Autowired
Authorities authorities;
...
}