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

Posted 一乐乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Spring5必知必会~未使用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();

以上是关于学习Spring5必知必会~未使用spring前的麻烦的主要内容,如果未能解决你的问题,请参考以下文章

学习SpringMVC必知必会~springmvc的数据校验表单标签文件上传和下载

必知必会|C++学习中的核心知识点总结

学习MyBatis必知必会~日志框架

学习MyBatis必知必会~注解开发动态SQL

mysql必知必会的学习

《MySQL必知必会学习笔记》:高级联结