美文网首页Java架构技术栈
离程序员又近了一步:详细记录Spring基本开发流程

离程序员又近了一步:详细记录Spring基本开发流程

作者: 若丨寒 | 来源:发表于2020-07-14 16:07 被阅读0次

一、Spring概述

1.1 Web开发中的一些问题

  • 传统Web开发存在硬编码所造成的过度程序耦合(例如:Service中作为属性Dao对象)
  • 部分Java EE API较为复杂,使用效率低(例如:JDBC开发步骤)
  • 侵入性强,移植性差(例如:DAO实现的更换,从Connection到SqlSession)

1.2 什么是Spring?

  • Spring 是一个开源的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用
  • Spring是众多优秀设计模式的组合(工厂、单例、代理、适配器、包装器、观察者、模板、策略)
  • Spring并未替代现有框架产品,而是将众多框架进行有机整合,简化企业级开发,俗称"胶水框架"

1.3 官网

官方网站: spring.io/

GitHub: github.com/spring-proj…

下载地址: repo.spring.io/release/org…

1.4 Spring架构组成

Spring架构由诸多模块组成,可分类为

  • 核心技术: 依赖注入 ,事件,资源,i18n,验证,数据绑定,类型转换,SpEL, AOP
  • 测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。
  • 数据访问: 事务 ,DAO支持,JDBC,ORM,封装XML。
  • Spring MVC和 Spring WebFlux Web框架。
  • 集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。
  • 语言:Kotlin,Groovy,动态语言。

Spring特点

离程序员又近了一步:详细记录Spring基本开发流程

Spring架构

离程序员又近了一步:详细记录Spring基本开发流程

1.5 Spring依赖

离程序员又近了一步:详细记录Spring基本开发流程

二、自定义工厂

编写一个读取Spring配置文件并创建对象的工厂,了解Spring工厂创建对象的流程,以便使用自定义工厂来测试Spring基本开发流程

package com.mylifes1110.factory;import java.io.IOException;import java.util.Properties;/** * @ClassName MyFactory * @Description 自定义工厂(创建对象) * @Author Ziph * @Date 2020/7/12 * @Since 1.8 * @Version 1.0 */public class MyFactory {    private Properties properties = new Properties();    public MyFactory() {    }    public MyFactory(String config) throws IOException {        // 加载配置文件        properties.load(MyFactory.class.getResourceAsStream(config));    }    // 获取对象    public Object getBean(String beanName) throws ClassNotFoundException, IllegalAccessException, InstantiationException {        String classPath = properties.getProperty(beanName);        if (classPath != null) {            Class clazz = null;            clazz = Class.forName(classPath);            return clazz.newInstance();        }        return null;    }}

三、Spring基本开发步骤

3.1 创建Maven项目

如果对Maven不了解的小伙伴可以参考 Maven教程

File -> NewProject

离程序员又近了一步:详细记录Spring基本开发流程

创建Maven项目

离程序员又近了一步:详细记录Spring基本开发流程

3.2 引入依赖

在pom.xml文件中引入Spring常用依赖

<dependencies>    <!-- Spring常用依赖 -->    <dependency>       <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>     <version>5.1.6.RELEASE</version>    </dependency></dependencies>

3.3 创建Spring空配置文件

在resources文件夹中创建一个名为 spring-context.xml ,命名并无规定,还有其他的常用命名,比如: applicationContext.xml 、 beans.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">   </beans>

3.4 定义需要生产的Bean对象

定义一个Bean对象、生产该对象并测试该对象内的方法(UserDaoImpl)

package com.mylifes1110.dao.impl;import com.mylifes1110.bean.User;import com.mylifes1110.dao.UserDao;public class UserDaoImpl implements UserDao {    @Override    public int insertUser(User user) {        System.out.println("------insertUser and UserDao------");        return 0;    }}

3.5 基本依赖注入

依赖注入在这里可以把它理解为将要生产的对象注入到Spring容器中,也就是在spring-context.xml文件利用标签注入,这样就可以让Spring知道你要生产的对象是谁

标签:<bean id="唯一标签" class="需要被创建的目标对象全限定名"/>

<?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.mylifes1110.dao.impl.UserDaoImpl"/>       </beans>

3.6 调用Spring工厂创建对象

调用Spring工厂API接口ApplicationContext读取配置Spring核心配置文件并创建工厂对象

package com.mylifes1110.dao;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserDaoImplTest {    /**     * @MethodName insertUser     * @Param []     * @Description 测试使用Spring工厂获取对象     * @Author Ziph     * @Date 2020/7/12     */    @Test    public void insertUser() {        // 读取配置文件所需创建对象中所需创建的bean对象并获取spring工厂对象        ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");        // 通过注入时的唯一标识(id)获取bean对象        UserDao userDao = (UserDao) context.getBean("UserDao");        // 使用对象        userDao.insertUser(null); // 输出结果为:------insertUser and UserDao------    }}

四、依赖与配置文件详解

4.1 Spring的依赖关系

Spring框架包含多个模块,每个模块各司其职,可结合需求引入相关依赖Jar包实现功能。

注意:Jar包彼此存在依赖,只需引入最外层Jar即可由Maven自动将相关依赖Jar引入到项目中。

Spring常用功能的Jar包依赖关系

离程序员又近了一步:详细记录Spring基本开发流程

4.2 schema

配置文件中的顶级标签中包含了语义化标签的相关信息(spring-context.xml头文件即是schema)

注意:Spring需要导入的schema标签是很有规律的,因为Spring是特别规范的。例如:如下context别名的schema标签是我自己复制修改的,它也是我们所用到Spring的schema,你可以复制beans的schema来替换所有beans的关键字即可,但是记得复制全(注意查看三个有context标志标签语句,另外“ : ”后面的是别名哦)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"           xmlns:context="http://www.springframework.org/schema/context"                  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                  http://www.springframework.org/schema/context http://www.springframework.org/schema/beans/spring-context.xsd"></beans>
离程序员又近了一步:详细记录Spring基本开发流程

来源:https://www.tuicool.com/articles/FfMRb2v

相关文章

  • 离程序员又近了一步:详细记录Spring基本开发流程

    一、Spring概述 1.1 Web开发中的一些问题 传统Web开发存在硬编码所造成的过度程序耦合(例如:Serv...

  • 又离故乡近了一步

    又离故乡近了一步 迎面的风是那样熟悉 我尝试着亲吻风的面颊 却始终无法达到热烈的程度 这一条路,很多熟悉的人走过 ...

  • 离毕业又近了一步

    明天要上学了 离大三结束的日子又近了一步 其实对于毕业后的日子有些许期待也有阴郁 我变得焦虑不安,思考着,计算着自...

  • 离目标又近了一步

    5/20 儿子今天只用了12块钱的生活费,省下来8块钱作为买鞋资金,至今为止一共存钱35块(包括我今天因为调错闹钟...

  • 离太谷又近了一步

    昨天听了胡老师的课,是很坚定了我要带上一家三口远赴山西太谷,追随胡老师去参加中学生训练营,在我心里已经把参加...

  • 离独立又近了一步

    过完六一准备给十一离乳,每次想到这个问题,都觉得很不舍,估计只有当妈妈的才能体会到这种感觉 本来计划自然离乳,前段...

  • 离机会又近了一步

    昨天的鬼故事有点多,白酒、医药、中概股、缩减购债各种鬼故事都有,所以昨天的市场跌得很难看,但是我比较开心,每次看到...

  • 离毕业又近了一步……

    论文答辩,已过。 毕业照,已拍。 图书馆借来的书,已还。 自己收藏的书,正在一本一本转手。 ……………… 熟悉的人...

  • 离健康又近了一步

    早上六点半妈妈就要我起床去医院。我心想八点医生上班我们就住在医院附近酒店,几分钟就到医院了,为啥还要早起。因此我极...

  • 离梦想又近了一步

    眼看着时间又来到了0点,而我还没有停下忙碌的脚步。 确切的说要干的活还很多,今天总想是完成了一件大事。那就是小女终...

网友评论

    本文标题:离程序员又近了一步:详细记录Spring基本开发流程

    本文链接:https://www.haomeiwen.com/subject/nnlfhktx.html