淘淘redis项目随记

电商行业模式

B2B:企业到企业,商家到商家。代表:阿里巴巴、慧聪网。

B2C:商家到客户。代表:京东、淘宝商城。

C2C:客户到客户。代表:淘宝集市。

O2O:线上到线下

 

传统项目会出现什么问题?

  1. 模块之间耦合度太高,其中一个升级其他都得升级
  2. 开发困难,各个团队开发最后都要整合一起
  3. 系统的扩展性差
  4. 不能灵活的进行分布式部署

 

解决方法

优点:把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置,其他的点不受影响。

缺点:系统之间交互需要额外的工作量来进行接口的开发。

分布式架构

把一个系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。

 

把系统按照模块拆分成多个子系统。

优点:

  1. 把模块拆分,使用接口通信,降低模块之间的耦合度。
  2. 把项目拆分成若干个子项目,不同的团队负责不同的子项目。
  3. 增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
  4. 可以灵活的进行分布式部署。

缺点:

    系统之间交互需要使用远程通信,接口开发增加工作量。

 

分布式与集群

分布式:一个业务分拆多个子业务,部署在不同的服务器上

集群:同一个业务,部署在多个服务器上

 

使用SVN

上传项目到svn服务器上,右击项目,选择Team,然后点击share project,选择SVN

淘淘redis项目随记_第1张图片

忽略一些本地个性文件,防止上传到服务器上

右击文件选择”添加至svn:ignore”,点击ok。

 

Sku:最小库存量单位。就是商品id,就是商品最细力度的划分。每个sku都对应唯一一款商品,商品的颜色、配置都已经唯一确定。(电商行业名词)

指的是同一类商品,根据不同的配置,划分出不同的类别。比如:iphone有16G、64G,颜色有黑的,银的,那么这个不同的配置,每个配置组合而成的一款手机,就是一个sku

 

SSM框架整合

Dao层

使用mybatis框架。创建SqlMapConfig.xml。里面的数据源都交给spring管理,但是这个文件必须存在,否则会报错

创建一个applicationContext-dao.xml

  1. 配置数据源
  2. 需要让spring容器管理SqlsessionFactory,单例存在。
  3. 把mapper的代理对象放到spring容器中。使用扫描包的方式加载mapper的代理对象。

Service层

  1. 事务管理
  2. 需要把service实现类对象放到spring容器中管理。

表现层

  1. 配置注解驱动
  2. 配置视图解析器
  3. 需要扫描controller

Web.xml

  1. spring容器的配置
  2. Springmvc前端控制器的配置
  3. Post乱码过滤器

 

框架整合

需要把配置文件放到taotao-manager-web工程下。因为此工程为war工程,其他的工程只是一个jar包。

Mybatis整合

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

applicationContext-dao.xml

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

destroy-method="close">

 

Service层

applicationContext-service.xml

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

applicationContext-trans.xml

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

   

   

 

 

     

   

   

   

   

   

   

   

   

   

   

 

   

表现层

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

 

 

   

   

Web.xml

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="taotao" version="2.5">

 

taotao-manager

 

     index.html

     index.htm

     index.jsp

     default.html

     default.htm

     default.jsp

 

    contextConfigLocation

    classpath:spring/applicationContext-*.xml

 

    org.springframework.web.context.ContextLoaderListener

 

    CharacterEncodingFilter

    org.springframework.web.filter.CharacterEncodingFilter

   

        encoding

        utf-8

   

 

    CharacterEncodingFilter

    /*

 

    taotao-manager

    org.springframework.web.servlet.DispatcherServlet

   

   

   

        contextConfigLocation

        classpath:spring/springmvc.xml

   

 

    1

 

    taotao-manager

    /

 

/:会拦截所有请求包括静态资源。需要在springmvc.xml中添加静态资源的映射。

 

问题:为什么不只配一个扫描包,而在dao,service,controller中都进行配置?

解答:在web.xml中配置了一个spring容器,这会创建一个spring的父容器,又创建了一个springmvc的前端控制器,是在spring容器中创建了一个springmvc的子容器,springmvc子容器中放着的是controller,spring容器中放着的是dao和service,子容器可以访问父容器的对象,但是父容器不可以访问子容器,如果配置了全局扫描,那么dao,service,controller就都会在spring容器中存在,springmvc中前段控制器就没有这个对象,访问时会报404错误。

注意:这是spring和springmvc整合时候需要注意的问题,如果只用springmvc,可以只扫描一次,dao,service,controller都会在springmvc容器中存在,不会出现问题

 

淘淘redis项目随记_第2张图片

淘淘redis项目随记_第3张图片

例如:只在applicationContext-service中配置:

会扫描@Controller、@Service、@Repository、@Compnent

Springmvc.xml中不扫描。

结论:springmvc。不能提供服务,因为springmvc子容器中没有controller对象。

你可能感兴趣的:(随便写写)