Java 自定义Spring框架以及Spring框架的基本使用

 更新时间:2021年10月14日 10:28:23   作者:李阿昀  
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发

从现在开始,大家可以跟随着我的脚步来自定义一个属于自己的Spring框架。但是,在学习自定义Spring框架之前,我们得先来回顾一下Spring框架的基本使用。知晓了Spring框架的基本使用之后,我们将会在此基础上分析Spring的核心,即IoC,最后我们会对该核心进行一个模拟。

相信大家都使用过Spring框架,现在恐怕是无人不知Spring了吧!我相信你在实际项目开发中肯定用到过它,一般在实际项目中用到它的话,都会采用Java EE的三层架构,这三层架构是:

  • 数据访问层,也即Dao层
  • 业务逻辑层,也即Service层
  • 控制器层,也即Controller层

下面我们就采用这三层架构来编写我们的代码,以此来回顾一下Spring框架的基本使用。

回顾一下Spring框架的基本使用

首先,使用IDEA来创建一个Maven工程,工程名字你可以取为spring_demo,在该工程中我们就来使用一把Spring。

注意了,在使用Spring框架之前,我们先要做一件事,那就是在Maven工程的pom.xml文件中引入Spring框架的坐标。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.9</version>
</dependency>

然后,根据Java EE的三层架构创建好各层对应的包,为了让大家清楚地看到我都创建了哪些包,干脆我把最终Maven工程的结构给大家展示出来吧!

在这里插入图片描述

各层对应包创建好之后,接下来我们就要编写各层对应的代码了。

数据访问层

首先,创建数据访问层接口,该接口我们不妨就命名为UserDao。

package com.meimeixia.dao;

/**
 * 数据访问层接口
 * @author liayun
 * @create 2021-09-19 18:17
 */
public interface UserDao {

    public void add();

}

然后,创建数据访问层接口的子实现类,该类我们不妨就命名为UserDaoImpl。

package com.meimeixia.dao.impl;

import com.meimeixia.dao.UserDao;

/**
 * 数据访问层实现类
 * @author liayun
 * @create 2021-09-19 18:29
 */
public class UserDaoImpl implements UserDao {

    @Override
    public void add() {
        System.out.println("UserDao...");
    }

}

业务逻辑层

首先,创建业务逻辑层接口,该接口我们不妨就命名为UserService。

package com.meimeixia.service;

/**
 * 业务逻辑层接口
 * @author liayun
 * @create 2021-09-19 18:31
 */
public interface UserService {

    public void add();

}

然后,创建业务逻辑层接口的子实现类,该类我们不妨就命名为UserServiceImpl。

package com.meimeixia.service.impl;

import com.meimeixia.dao.UserDao;
import com.meimeixia.service.UserService;

/**
 * 业务逻辑层实现类
 * @author liayun
 * @create 2021-09-19 18:37
 */
public class UserServiceImpl implements UserService {

    // 因为业务逻辑层是要调用数据访问层中的功能的,所以在这儿我们得声明一个UserDao类型的变量
    private UserDao userDao; // 注意了,这儿我们并没有为该变量进行赋值,赋值的操作得交给Spring去做,只是这样做的前提是我们得为该变量提供一个setter方法

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void add() {
        System.out.println("UserService...");
        userDao.add();
    }

}

控制器层

首先,编写Spring的配置文件,这里,我们在类路径(在IDEA看来,其实就是src > main > resources目录)下编写了一个名为applicationContext.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">

    <bean id="userDao" class="com.meimeixia.dao.impl.UserDaoImpl"></bean>

    <bean id="userService" class="com.meimeixia.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>

</beans>

然后,创建控制器,这里我们就命名为UserController了。注意了,在该控制器中我们是使用main方法来模拟Controller层的。

package com.meimeixia.controller;

import com.meimeixia.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author liayun
 * @create 2021-09-19 18:41
 */
public class UserController {
    public static void main(String[] args) throws Exception {
        // 1. 创建Spring的容器对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 2. 从容器对象中获取UserService对象
        UserService userService = applicationContext.getBean("userService", UserService.class);
        // 3. 调用UserService对象的方法进行业务逻辑处理
        userService.add();
    }
}

以上控制器的代码写完之后,随即我们来做一个测试。运行以上控制器的代码,打印结果如下图所示。

在这里插入图片描述

通过上面代码及结果可以看出:

  • UserService对象是从Spring容器对象中获取到的,也就是UserService对象是交由Spring来进行管理的。
  • 从上面结果中可以看到调用了UserDao对象中的add方法,也就是说UserDao子实现类对象也交由Spring来管理了。
  • UserService中的userDao变量我们并没有进行赋值,但是可以正常使用,说明Spring已经将UserDao对象赋值给了userDao变量。

相信大家都能看出来,上面三点体现出来了Spring框架两个核心,即IoC(Inversion of Control,控制反转)和DI(Dependency Injection,DI,依赖注入)。

至此,我们就回顾完了Spring框架的基本使用。

到此这篇关于Java 自定义Spring框架以及Spring框架的基本使用的文章就介绍到这了,更多相关Java 自定义Spring框架内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • httpclient提交json参数的示例详解

    httpclient提交json参数的示例详解

    httpclient使用post提交json参数,和使用表单提交区分,本文结合示例代码讲解的非常详细,补充介绍了HttpClient请求传json参数的案例代码,感兴趣的朋友一起看看吧
    2024-02-02
  • 常用的Java数据结构知识点汇总

    常用的Java数据结构知识点汇总

    这篇文章主要介绍了常用的Java数据结构知识点汇总,数据结构分线性数据结构和非线性数据结构,下面对此作详细介绍,需要的小伙伴可以参考一下,希望对你的学习或工作有所帮助
    2022-03-03
  • MyBatis-Plus+Druid配置及应用详解

    MyBatis-Plus+Druid配置及应用详解

    这篇文章主要介绍了MyBatis-Plus+Druid配置及应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Shiro实现session限制登录数量踢人下线功能

    Shiro实现session限制登录数量踢人下线功能

    这篇文章主要介绍了Shiro实现session限制登录数量踢人下线,本文记录的是shiro采用session作为登录方案时,对用户进行限制数量登录,以及剔除下线,需要的朋友可以参考下
    2023-11-11
  • Java微服务Nacos Config配置中心超详细讲解

    Java微服务Nacos Config配置中心超详细讲解

    配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动维护
    2023-02-02
  • 解析Springboot集成Tile38客户端之Set命令实现示例

    解析Springboot集成Tile38客户端之Set命令实现示例

    这篇文章主要为大家介绍了解析Springboot集成Tile38客户端之Set命令实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java中的Excel框架使用详解

    Java中的Excel框架使用详解

    这篇文章主要介绍了Java中的Excel框架使用详解,Java解析、生成Excel比较有名的框架有Apache poi、jxl,但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,需要的朋友可以参考下
    2023-11-11
  • JAVA匿名内部类语法分析及实例详解

    JAVA匿名内部类语法分析及实例详解

    这篇文章主要介绍了JAVA匿名内部类语法分析及实例详解,匿名内部类可以使你的代码更加简洁,它与局部类很相似,不同的是它没有类名,如果某个局部类你只需要用一次,那么你就可以使用匿名内部类。对此感兴趣的可以了解一下
    2020-07-07
  • SpringMVC拦截器超详细解读

    SpringMVC拦截器超详细解读

    SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用
    2022-07-07
  • Spring依赖注入的几种方式分享梳理总结

    Spring依赖注入的几种方式分享梳理总结

    这篇文章主要介绍了Spring依赖注入的几种方式分享梳理总结,文章围绕主题展开详细,具有一定参考价值,需要的朋友可以参考一下
    2022-07-07

最新评论