springmvc 对应的controller 是否归spring容器管理

在做项目时,有时候会遇到springmvc管理的bean和spring容器管理的bean的归属问题,是否可以交叉获取,在此记录一下一直以来的疑惑。 

SpringMVC管理Controller有两种方式(题外话:springmvc 通过@RequestMapping(“/memberInfo”) 把url映射关系存储起来)
controller 默认是单例模式。若是在@controller之前增加@Scope(“prototype”),就可以改变单例模式为多例模式

第一种方式是在SpringMVC 的配置文件中定义MyController 的bean 对象。

<bean class="com.host.app.web.controller.MyController"/>

第二种方式是在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。

< context:component-scan base-package = "com.host.app.web.controller" >  
   < context:exclude-filter type = "annotation"  
       expression = "org.springframework.stereotype.Service" />  
</ context:component-scan >   
注:
   上面 context:exclude-filter 标注的是不扫描 @Service 标注的类

在写这篇文章时,参考了博客:http://blog.csdn.net/sp_xiong/article/details/52002345
那么到底,spring上下文管理哪些bean,springmvc上下文管理哪些bean?

在解决这个问题之前,先要弄清楚,spring上下文和SpringMVC上下文。
先看配置,Spring上下文配置,在Web.xml里

<context-param>    
    <param-name>contextConfigLocation</param-name>    
    <param-value>classpath:resources/spring.xml</param-value>    
</context-param>  
<!-- Spring监听器 -->    
<listener>    
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    
</listener>  

spring.xml里面配置的bean属于Spring上下文。
SpringMVC上下文配置,在Web.xml里

<!-- Spring MVC servlet -->    
    <servlet>    
        <servlet-name>SpringMVC</servlet-name>    
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
        <init-param>    
            <param-name>contextConfigLocation</param-name>    
            <param-value>classpath:resources/spring-mvc.xml</param-value>    
        </init-param>    
        <load-on-startup>1</load-on-startup>    
        <async-supported>true</async-supported>    
    </servlet>  

spring-mvc.xml里面配置的bean属于SpringMVC上下文。

注意:SpringMVC上下文和Spring上下文是分开独立,两者是父子关系,Spring 父<->SpringMVC 子,但是SpringMVC上下文是可以取得Spring上下文,反之则不行。
controller 中service注入 是有spring注入的,跟spring容器管理bean是两码事。
spring容器初始化时间较早:spring容器初始化是通过监听器;springmvc初始化是通过servlet。

注意:开发时一定要注意,管理我们controller实例,是有springMVC ,还是有spring。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值