开发者社区> 问答> 正文

spring 中@scope的问题

我想在用户请求的时候,获取二级域名,并注册,然后想到处都能使用。
于是,写了下面的代码,希望在每个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'

是不是我缺少配置了?

展开
收起
蛮大人123 2016-03-09 14:02:52 2040 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    给@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广。

    2019-07-17 18:56:03
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多