学习Spring5必知必会(1)~未使用spring前的麻烦

简介: 学习Spring5必知必会(1)~未使用spring前的麻烦

一、未使用spring前的麻烦

  • 开闭原则:扩展是开放的,但是对于修改是“封闭的”。


1、代码耦合度比较高【不符合开闭原则】:

public class EmployeeServiceImpl implements IEmployeeService {
  private IEmployeeDAO dao;
  public EmployeeServiceImpl() {
    //创建依赖对象
    dao = new EmployeeDAOJdbcImpl();
  }
  public void save() {
  //TODO
  }
}
  • 此时如果把IEmployeeDAO 的实现类换成 EmployeeDAOMyBatisImpl , 此时需要修改 EmployeeServiceImpl 的源代码,不符合开闭原则。


2、循环依赖问题(使用A类要先创建B类;使用B类要先创建C类;使用C类要先创建A类,循环啦。。。)


3、控制事务繁琐【不符合开闭原则】:

//增删改查的步骤重复了(打开资源、开启事务、提交事务、回滚事务、释放资源)
public class EmployeeServiceImpl implements IEmployeeService {
  public void save() {
    //打开资源
    //开启事务
    try {
      //保存操作
      //提交事务
    } catch (Exception e) {
           //回滚事务
    } finally {
      //释放资源
    }
  }
}
■ 模板基类:
  • 模板类:作为父类,处理通用算法功能,把不同的处理细节暴露给子类。
//模板基类:
public class BaseServiceTemplate implements IEmployeeService {
    public void save() {
        //打开资源
        //开启事务
        try {
            this.doSave();
            //提交事务
        } catch (Exception e) {
            //回滚事务
        } finally {
            //释放资源
        }
    }
    protected void doSave() {
        //NOOP
    }
}
//子类
public class EmployeeServiceImpl extends BaseServiceTemplate implements IEmployeeService {
    protected void doSave() {
        //保存操作
    }
}


■ 使用第三方框架运用太麻烦:
//使用mybatis框架
Person p = new Person();
SqlSession session = MyBatisUtil.getSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
personMapper.insert(p);
session.commit();
session.close();


目录
相关文章
|
18天前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
7月前
|
监控 Java 应用服务中间件
微服务——SpringBoot使用归纳——为什么学习Spring Boot
本文主要探讨为什么学习Spring Boot。从Spring官方定位来看,Spring Boot旨在快速启动和运行项目,简化配置与编码。其优点包括:1) 良好的基因,继承了Spring框架的优点;2) 简化编码,通过starter依赖减少手动配置;3) 简化配置,采用Java Config方式替代繁琐的XML配置;4) 简化部署,内嵌Tomcat支持一键式启动;5) 简化监控,提供运行期性能参数获取功能。此外,从未来发展趋势看,微服务架构逐渐成为主流,而Spring Boot作为官方推荐技术,与Spring Cloud配合使用,将成为未来发展的重要方向。
235 0
微服务——SpringBoot使用归纳——为什么学习Spring Boot
|
4月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
562 2
|
6月前
|
Java Spring
Spring框架的学习与应用
总的来说,Spring框架是Java开发中的一把强大的工具。通过理解其核心概念,通过实践来学习和掌握,你可以充分利用Spring框架的强大功能,提高你的开发效率和代码质量。
163 20
|
11月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
246 9
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
158 9
|
11月前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
226 0
|
Java API Spring
Spring学习路径
Spring作为一个优秀的开源企业级框架有着一下特点 开源框架 简化企业级应用开发的流程 Spring是一个JavaSE/EE的一站式框架 优点在于 方便解耦 AOP的编程支持 声明式事务的支持 可以引入jUnit4,方便程序测试 对优秀开源框架的支持,方便集成 降低JavaEE API的使用难度.
2604 0
|
7天前
|
XML 前端开发 Java
一文搞懂 Spring Boot 自动配置原理
Spring Boot 自动配置原理揭秘:通过 `@EnableAutoConfiguration` 加载 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 中的配置类,结合 `@Conditional` 按条件注入 Bean,实现“开箱即用”。核心在于约定大于配置,简化开发。
164 0
|
3月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
790 0

热门文章

最新文章