spring-mvc-10-运行流程及spring与springMVC整合

一. 整体流程

spring-mvc-10-运行流程及spring与springMVC整合_第1张图片
Paste_Image.png

二. Spring和SpringMVC

  • 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao等.
    比如新建配置文件名为 beans.xml


        
    
    
         
          
    
    
    

  • 配置 web.xmlContextLoaderListener 监听器,读取spring beans.xml 配置文件内容
  
    
        contextConfigLocation
        classpath:beans.xml
    
    
    
        org.springframework.web.context.ContextLoaderListener
    
  • 修改 springmvc.xml 扫描包,只扫描秒handler需要的注解 @Controller@ControllerAdvice 注解
     
    
        
          
    

注意: 如果不这样配置,则启动tomcat时候,回使同一个bean被初始化两次

  • 新建 UserService 处理业务罗辑类
package com.atguigu.springmvc;

import org.springframework.stereotype.Service;
/**
 * 初始化在Spring的IOC容器中
 * @author lxf
 */
@Service
public class UserService {
    public  UserService()
    {
        System.out.println("UserService Contructor...");
    }
}
  • 在SpringMVC的IOC容器中的HelloWorld hanlder 可以引用 Spring IOC容器中的 UserService ,反之则不行. Spring IOC 容器中的 UserService却不能来引用 SpringMVC IOC 容器中的 HelloWorld
package com.atguigu.springmvc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 测试helloworld处理器
 * @author lxf
 */
@Controller
public class HelloWorld {
    //引用Spring IOC容器中的bean
    @Autowired
    private UserService userService;
    public  HelloWorld()
    {
        System.out.println("HelloWorld contructor ... ");
    }
    @RequestMapping("/hello")
    public String hello()
    {
        System.out.println("Spring IOC userService = " + userService);
        System.out.println("hello world");
        return "success";
    }
}
  • 访问: http://localhost:8081/spring-mvc-3/hello
    后台控制台输出:
Spring IOC userService = com.atguigu.springmvc.UserService@5ea925c4
hello world

点击查看代码练习

你可能感兴趣的:(spring-mvc-10-运行流程及spring与springMVC整合)