spring

三层框架&MVC

  • 前端
  • 客户端   -->  发出请求到服务器       服务器从database获取数据并处理返回客户端
  • 服务器做了些什么: 1.处理前端路径  2. 处理业务逻辑    3.用于持久化数据到数据库或从数据库查取到的数据

          1.1 前端处理器(web层,controller层)  --------springMVC

          2.1 业务逻辑处理层(service层)            ---------spring

          3.1 数据处理层 (持久层,dao层)          ---------mybatis

以上叫三层架构,改进为MVC模式

spring_第1张图片

 

 

Mybatis:  

 主要是做业务逻辑与数据库之间的交互作用,即把数据存到数据库或把数据库数据取出来封装到对象中                配置                 mybatis的主配置文件(告诉程序使用mybatis,用什么环境,使用哪个数据库,别名)                   

          配置别名  :驼峰命名,配置缓存:数据从数据库取出后先放在缓存  -->选择一级缓存,二级缓存 or无缓存

          配置映射文件: 配置字段映射,配置sql语句

 

 

spring:

  用于控制反转和依赖注入  
  用于配置数据源
  用于整合mybatis
  用于控制事务
  用于切面编程AOP

1. 控制反转:创建对象的权限变了,spring由容器创建存储对象

自己new对象存在的问题:如果对象不是立即用,那么创建它会占用内存,我们希望  -->1.在用的时候才创建对象  2.创建一次,多次利用    ---------->解决方法:容器(map集合),spring中叫IOC容器,

  -->IOC来创建这个对象

2. 依赖注入:把IOC创建的对象注入

需要在xml中配置: 要给哪个类配置,属性名称,值是什么

3.频繁的开启数据库连接很耗费资源和时间,影响性能

eg :银行转账问题: 模拟操作数据库

    xialaoshi.getMoney(){
      从银行数据查询金额1000
    }
    xialaoshi.money(){
      进行转账
      money -=200;
    }
    xialaoshi.saveMoney(){
     将 money=800存入数据库
    }
    
    xuesheng.gettMoney(){
      从银行数据查询金额1000
    }
    xuesheng.money(){
      进行转账
      money +=200;
    }
    xuesheng.saveMoney(){
     将 money=1200存入数据库
    }


以上操作了四次数据库,很耗资源和时间,采用数据库连接池,要用取出,用完放回(涉及增删改,先提交事务再放回)

spring控制事务提交&回滚
 

4.切面编程AOP

如果要在n个方法中多打印一句话 -->  每个方法都调用打印这句话,太重复,代码冗余 ×   --> 切面编程

 

 springmvc:


 配置扫描控制器类
 配置视图解析器
  
    

 

项目实战:

1.建项目

2.部署到tomcat,看能否正常运行

3. 正常运行后开始建三层架构

   spring_第2张图片

你可能感兴趣的:(spring)