• spring mvc


    一、需要进行 Spring 整合 SpringMVC 吗 ?还是否需要再加入 Spring 的 IOC 容器 ?是否需要再 web.xml 文件中配置启动 Spring IOC 容器的 ContextLoaderListener ?

    1. 需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.
    2. 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件

    二、问题: 若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.

    解决:
    1. 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分.
    2. 使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解

    三、SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean. 

    返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!

    四、

    1.web.xml

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    2.applicationContext.xml(spring的ContextLoaderListener)

    <context:component-scan base-package="com.ddf.springmvc">
        <context:exclude-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"/>
    
        <context:exclude-filter type="annotation"
                                expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>

    3.dispatcher-servlet.xml(springMVC的DispatcherServlet)

    <context:component-scan base-package="com.ddf.springmvc" use-default-filters="false">
        <context:include-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"/>
    
        <context:include-filter type="annotation"
                                expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>
    
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <mvc:default-servlet-handler/>
    
    <mvc:annotation-driven/>

    4.HelloWorld.java

    @Controller
    public class HelloWorld {
    
        @Autowired
        private UserService userService;
    
        public HelloWorld() {
            System.out.println("HelloWorld Constructor....");
        }
    
        @RequestMapping("/hello")
        public String hello(){
            System.out.println(userService);
            System.out.println("hello");
            return "success";
        }
    }

    5.UserService.java

    @Service
    public class UserService {
    //    @Autowired
    //    private HelloWorld helloWorld;
    
        public UserService() {
            System.out.println("UserService Constructor....");
        }
    }
  • 相关阅读:
    仿网易/QQ空间视频列表滚动连播炫酷效果
    UIScrollerView当前显示3张图
    iOS AVPlayer视频播放器
    iOS 购物车动画
    C++从零实现简单深度神经网络(基于OpenCV)
    Android 轻松实现仿淘宝地区选择
    微信小程序之下拉刷新,上拉更多列表实现
    iOS 指南针
    tableView 获取网络图片,并且设置为圆角(优化,fps)
    黑客技术 —— Linux 命令行
  • 原文地址:https://www.cnblogs.com/djdjfj/p/9620168.html
Copyright © 2020-2023  润新知