我想在用户请求的时候,获取二级域名,并注册,然后想到处都能使用。
于是,写了下面的代码,希望在每个session产生的时候,能注册一个subDomain的对象,
然后在一个interceptor中修改subDomain实例的值,
从而使别的注入的地方能取到subDomain的值,
但是报错了。
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Bean
@Scope("session")
public SubDomain subDomain(){
return new SubDomain();
}
}
@Service
public class UserService {
@Autowired
private SubDomain subDomain;
}
错误信息如下
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.exa.as.config.SubDomain com.exa.as.service.UserService.subDomain; nested exception is java.lang.IllegalStateException: No Scope registered for scope 'session'
是不是我缺少配置了?
给@Scope设置属性proxyMode
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Bean
//@Scope("session")
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public SubDomain subDomain(){
return new SubDomain();
}
}
大概是因为,被注入的bean的作用域是Singleton,而Singleton的作用域要比Session广。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。