ssm整合之路的思路整理

本文详细介绍了SSM(Spring、SpringMVC、MyBatis)整合的思路,从知识储备、单个技术点剖析到整合过程。重点讨论了Spring作为超级管理者的角色,SpringMVC作为页面管理员的角色,以及MyBatis在数据库管理中的作用。通过步骤演示了如何搭建Spring环境、SpringMVC框架,并整合MyBatis,包括目录结构、配置文件、数据库连接和测试。最后总结了SSM整合的难点和注意事项。
摘要由CSDN通过智能技术生成

一、知识储备

ssm整合是以spring为基础去整合spring Mvc和mybatis,又因为spring Mvc是spring家族中的一员,所以重点和难点是关于spring和mybatis和以及spring mvc和mybatis中的整合。本次整合使用注解+xml的方式。

1.1 spring担任的角色

超级管理,工作主要就是管理mvc和mybatis,涉及的MVC模型是service和dao,其利用控制反转(IOC/DI)和面向切面的思想(AOP),核心是Bean工厂(Bean Factory)来构造我们需要的Model。IOC/DI是把dao依赖注入给service层,service反转给Controller层,spring的顶级容器是BenaFactory。AOP是运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程,是OOP的补充。比如Aspect。
在这里插入图片描述

1.2 springmvc担任的角色

页面管理员,是ssm中的基础性框架,前端发送请求到DispacherServlet(前端控制器),由DispacherServlet控制器查询HanderMapping(处理器映射器),找到处理请求的Controller,Controller调用业务逻辑处理后,返回ModelAndView(控制器层写的代码),DispacherSerclet查询InternalResourceViewResolver(视图解析器的具体实现),找到ModelAndView指定的视图,视图负责将结果显示到客户端。
在这里插入图片描述

1.3 mybatis担任的角色

数据库管理员,工作在持久层。mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。 属于orm持久层框架,将业务实体与数据表联合起来,实现数据库的增删改查。

二、单个技术点

2.1 spring

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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.xsd">
        <bean id="" class=""></bean>
          <!--把用工厂的bean.properties创建对象交给bean来管理   一个id对应它的service和dao的实现类-->
</beans>

1.1创建bena的三种方式
a:使用默认构造函数创建
在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时。
采用的就是默认构造函数创建bean对象,注意:此时如果类中没有默认构造函数,则对象无法创建。
<bean id="accountService" class="com.springioc.service.AccountImpl">
b: 使用普通工厂的普通方法创建对象
<bean id="accountService" class="com.springioc.service.AccountImpl"></bean> <bean id="saveAccount" factory-bean="accountService" factory-method="saveAccount"></bean>
c:使用工厂中的静态方法创建对象,
<bean id="saveAccount" class="com.springioc.service.AccountImpl" factory-method="aspectOf"></bean>
1.2bean对象的作用范围,给bean标签加scope属性
a: singleton:是单例,也是默认值。
b: prototype:是多例。
c: request:作用于web应用的请求范围
d: session:作用于web应用的会话氛围
e: global-session:作用于集群环境的会话范围(全局会话),非集群就是session
1.3bean对象的生命周期
a: 单例对象
出生:当容器创建对象出生。init-method
活着:只要容器还在,对象一直活着
死亡:容器销毁,对象消亡。destory-method
总结:单例对象的生命周期和容器相同。
b: 多例对象
出生:当我们使用对象的时候,spring为我们创建。
活着:对象只要是在使用过程就一直活着。
死亡:当对象长时间不用且没有别的对象引用,就java的GC回收期回收
1.4依赖注入的三类数据和三种方式
三种类型
1、基本类型和string
构造函数或者set注入的方式其属性:value或者ref
2、其他bean类型(在配置文件中或者注解中配置过的bena)
构造函数或者set注入的方式其属性:value或者ref
3、复杂\集合
String[]: 使用set的时候,需要在property内写array子标签,然后进value子标签赋值。
三种方式
1、构造函数
在类中书写是哪个构造函数的传值,在配置中的bean内部写上constructor-arg标签,同时constructor-arg拥有五个属性,其是3+2模式,3是指定给构造函数中哪个参数赋值。2是给其赋具体的值。所以,3中常用的是name,2中的value常用基本类型和string。ref引用其他的bean类型
他的优势:在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功。
他的弊端:改变了bean对象的实例化方式,使我们创建对象时,如果不用这些数据,也必须提供。实际开发以set居多
2、set方法
在类中书写set方式,在配置中的bean内部写上property标签。拥有三个属性,其为1+2模式。
优势:创建对象的时候,没有明确的限制,可以直接使用默认构造函数。
弊端:如果有某个成员必须有值,则获取对象的时候set方法无法保证。
3、注解提供

2.2 springmvc

2.3 mybatis

三、整合之路

3.0 pom以及数据库

创建数据库

CREATE TABLE `account` (
  `ID` int(11) NOT NULL COMMENT '编号',
  `UID` int(11) default NULL COMMENT '用户编号',
  `MONEY` double default NULL COMMENT '金额',
  PRIMARY KEY  (`ID`),
  KEY `FK_Reference_8` (`UID`),
  CONSTRAINT `FK_Reference_8` FOREIGN KEY (`UID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

导入pom依赖的坐标:分为spring类别、mybatis类别、springmvc类别、连接池类别、测试类别、web类别。

3.0.1 spring类别
spring-context、spring-aop、spring-tx、aspectjweaver

在这里插入图片描述

3.0.2 springmvc类别
spring-webmvc、spring-web

在这里插入图片描述

3.0.3 mybatis类别

mybatis、spring-mybatis
在这里插入图片描述

3.0.4 连接池类别

c3p0、slf4j-log4j12、mysql-connector-java、spring-jdbc
在这里插入图片描述

3.0.5 测试类别

junit、log4j、spring-test
在这里插入图片描述

3.0.6 web类别

jstl、jsp-api、servlet-api
在这里插入图片描述

3.1 搭建spring的开发环境并spring调试通过

3.1.1目录结构

在这里插入图片描述

并且在domain下编写数据库字段对应的javabean。
在这里插入图片描述

3.1.2 在service层代码编写

接口:

import cn.com.dao.Account;
import java.util.List;
public interface AccountSerivce {
   
    public List<Account> findall();
    public void saveAccount(Account account);
}

实现类

package cn.com.service;
import cn.com.dao.Account;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("AccountService")
public class AccountServiceimpl implements AccountSerivce {
   
    @Override
    public List<Account> findall() {
   
        System.out.println("service.....findall执行");
        return null;
    }
    @Override
    public void saveAccount(Account account) {
   
        System.out.println("service....."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值