(Spring笔记)SpringFrameWork复习第3节——Spring框架完善MVC模拟用户添加业务

目录

一、前言

        (1)拆分多个Spring配置文件策略——>按层拆

二、开始改造

        (1)项目结构——>在上一节的基础上改动

        (2)修改applicationContext_mapper.xml——>UserMapperImpl没有可引用的成员变量,不用提供setterXXX方法

        (3)修改UserServiceImpl——>提供setterXXX方法

        (4)修改UserController——>提供setterXXX方法

三、测试功能

        (1)测试代码

        (2)运行结果(模拟的功能,真实开发,须与Mybatis+MySQL搭配,获取表真实存在数据)

四、总结


 本章学习源码Github地址:https://github.com/GuiZhouAndroid/MySpringAllProject/tree/master/SpringDemo03_YES_IOC_SET_XML_MVC


一、前言

        (1)拆分多个Spring配置文件策略——>按层拆

 原理:创建3个且命名不同的applicationContext配置文件,各自对应代表MVC其中一层,所以类对象集中管理和注入。再创建1个applicationContext配置文件汇总在一起,外部只需要加载此汇总的配置文件即可完成Spring框架的IOC。如下:

         totalContext.xml配置内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 单个Spring的applicationContext文件导入  -->
    <import resource="applicationContext_mapper.xml"/>
    <import resource="applicationContext_service.xml"/>
    <import resource="applicationContext_controller.xml"/>

    <!-- 批量导入Spring的applicationContext文件  -->
    <import resource="applicationContext_*.xml"></import>
</beans>

        外部调用totalContext.xml

 //1.创建容器并启动加载bean对象
 ApplicationContext ac = new ClassPathXmlApplicationContext("totalContext.xml");

二、开始改造

        (1)项目结构——>在上一节的基础上改动


        (2)修改applicationContext_mapper.xml——>UserMapperImpl没有可引用的成员变量,不用提供setterXXX方法

<?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">
    <!-- 创建各种需要容器管理的对象  -->
    <!--  1.创建数据访问层的对象  -->
    <bean id="uMapper" class="com.dhrj.java.zsitking.dao.impl.UserMapperImpl"/>
</beans>

        (3)修改UserServiceImpl——>提供setterXXX方法

public class UserServiceImpl implements UserService {

    // 在所有业务逻辑层中都必定有数据访问层的对象
    private UserMapper userMapper;//new UserMapperImpl();

    //提供setter()方法交由Spring容器beans工厂(totalContext.xml)管理数据访问层的对象
    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public int addUser(User user) {
        return userMapper.addUser(user);
    }
}

                修改对应的applicationContext_service.xml配置文件

<?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">
    <!-- 创建各种需要容器管理的对象  -->
    <!--  2.创建业务逻辑层的对象  -->
    <bean id="uService" class="com.dhrj.java.zsitking.service.impl.UserServiceImpl">
        <property name="userMapper" ref="uMapper"></property>
    </bean>
</beans>

        (4)修改UserController——>提供setterXXX方法

public class UserController {
    // 在所有界面层中都必定有业务逻辑层的对象
    private UserService userService ;//= new UserServiceImpl();

    //提供setter()方法交由Spring容器beans工厂(totalContext.xml)管理业务逻辑层的对象
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    /**
     * 界面层的功能实现,对外提供访问的功能
     *
     * @param user 待添加的用户信息
     * @return 添加结果
     */
    public int addUser(User user) {
        return userService.addUser(user);
    }
}

                修改对应的applicationContext_controller.xml配置文件

<?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">
    <!-- 创建各种需要容器管理的对象  -->
    <!--  3.创建界面层的对象  -->
    <bean id="uController" class="com.dhrj.java.zsitking.controller.UserController">
        <property name="userService" ref="uService"></property>
    </bean>
</beans>

说明:applicationContext_controller.xml applicationContext_service.xml 注入引用类型时会提示报红错误——>只是IDEA扫描不到而已,但Spring配置文件分层与合并策略是生效的,不影响使用。


三、测试功能

        (1)测试代码

/**
 * created by on 2022/6/7
 * 描述:测试三层架构搭建的项目
 *
 * @author ZSAndroid
 * @create 2022-06-07-14:43
 */
public class MyTest {
    @Test
    public void test01() {
        //1.创建容器并启动加载bean对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("totalContext.xml");
        //2.取出对象
        UserController uController = (UserController) ac.getBean("uController");
        //3.测试对象功能
        System.out.println(uController.addUser(new User(1998, "张松", 24)));
    }
}

        (2)运行结果(模拟的功能,真实开发,须与Mybatis+MySQL搭配,获取表真实存在数据)


四、总结

仅自己学习记录,如有错误,敬请谅解~,谢谢~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电竞丶小松哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值