暑期实训第三周小结01

一、Spring概述

Spring 是分层的 Java SE/EE 应用full-stack 轻量级开源框架,以IOC(Inverse Of Control: 反转控制AOP(Aspect Oriented Programming:面向切面编程为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术。

Spring 叫做EE开发的一站式框架。
Web层:SpringMVC
Service层:Spring的Bean管理、Spring声明式事务
Dao层:Spring的JDBC模板、Spring的ORM模块

二、IOC

什么是耦合?

模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差

举个例子:
早期的JDBC操作,注册驱动时,我们并为使用DriverManager的register方法,而是采用Class.forName的方式。这是为什么呢?

因为:我们的类依赖了数据库的驱动类,如果这时候更换了数据库,需要修改源码更新数据库驱动。

public class JdbcDemo{
	public static void main(String[] args) throws Exception {
		//1.注册驱动
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
		Class.forName("com.mysql.jdbc.Driver");
/*2.获取连接
3.获取预处理 sql 语句对象
4.获取结果集
5.遍历结果集*/
	} 
}

通过反射来注册驱动:

Class.forName("com.mysql.jdbc.Driver");//此处只是一个字符串

此时,我们的类中不再依赖具体的驱动类,此时就算删除 mysql 的驱动 jar 包,依然可以编译(但没有驱动是不可能运行成功的)。

但同时,mysql 驱动的全限定类名字符串是在 java 类中写死的,一旦要改还是要修改源码。

工厂模式解耦
实际开发中,我们把三层的对象都使用配置文件记下来,启动服务器应用的时候,让一个类的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时候,直接拿过来用。这个读取配置文件,创建和获取三层对象的类就是工厂。

三层对象存放在哪里?
由于我们是很多对象,肯定要找个集合来存。这时候有 Map 和 List 供选择。因为存在查找需求,所以选 Map。因此,在应用加载时,创建一个Map,用于存放三层对象。我们把这个map称为容器`。

什么是工厂?
工厂就是负责从容器中获取指定对象的类。这时候我们获取对象的方式发生了改变。
原来:我们在获取对象时,采用 new 的方式主动
现在: 我们获取对象时,需要问工厂要,工厂为我们查找或者创建对象被动的

控制反转(IOC),把创建对象的权利交给框架。其中最常见的方式叫做依赖注入(DI)

三、小例子

  • 配置环境
  • 创建项目,引入相关jar包
  • 在类的根路径下创建 xml 文件: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">
</beans>
  • 创建接口和类
/**
* 用户管理DAO层接口
*/
public interface UserDao {
	public void save();
}
/**
* 用户管理DAO实现类
*/
public class UserDaoImpl implements UserDao {
	@override
	public void save() {
		System.out.println("UserDaoImpl执行");
	}
}

  • 将实现类交给Spring管理
    在刚刚创建的applicationContext.xml文件beans标签中进行配置
<bean id="userDao" class="com.dao.UserDaoImpl"></bean>
  • 编写类
public void demo() {
	//创建工厂
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
	UserDao userDao = (UserDao)applicationContext.getBean("userDao");
	userDao.save();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值