Spring

1. 何为框架

1.1 何为软件

软件:是程序和文档的一个集合,是用来解决生活中遇到问题。例如:

  1. 为了方便购物:电子商务系统(京东、天猫)
  2. 为了解决打车难的问题(滴滴)
  3. 为了解决最后一公里问题(ofo、摩拜)

从软件编程角度分析,软件具体解决了哪些问题?

  1. 解决数据输入问题(键盘输入、语音输入)
  2. 解决数据处理问题(日志记录、存储问题、数据计算、数据推送)
  3. 解决数据输出问题(数据展现)

站在软件设计的角度,采用哪种方式解决问题会更好?

  1. 面向过程?(着眼点解决问题的基本算法和步骤)
  2. 面向对象?(着眼点使用哪些对象解决问题,可能更加符合大众思考点)

在这个过程中,对象如何设计?对象依赖管理,内存管理如何实现?

接口:标准
抽象类:一个标准的非完全实现(半成品)
具体类:接口或者抽象类的一个完美实现(成品)

1.2 何为框架

框架是软件编程中对待特定问题的封装和抽取。是为了降低软件编程难度,提高软件运行性能,提高软件可维护性,可拓展性而推出的一个半成品。例如spring,mybatis

生活中的框架:简历的模板就是构建一份完整简历的框架。

框架应用及设计时应用三个维度进行考虑:

  1. 面向对象
    从静态角度进行分析,把大象放冰箱里,首先考虑有哪些对象(大象),对象有哪些属性与行为,对象与对象之间有什么关系,如何通过这些对象解决对应问题。
  2. 面向切面
    从动态的角度进行分析,对象运行的过程中如何为对象扩展新的业务功能
  3. 面向服务
    微服务:阿里的dubbo, SOA 等等,从服务的角度进行细粒度控制,然后进行RPC调用。

分析现阶段做过的项目?

  1. 项目采用的什么架构?
  2. 项目中分了几层,层级之间有什么职责,层级之间如何关联
  3. 项目中对象创建以及对象的管理如何实现的?
  4. 项目中的线程安全如何考虑的

2. Spring框架

2.1 Spring概述
2.1.1 Spring是什么?

Spring是一个框架,主要是从三个维度(面向对象、面向切面、面向服务)然后通过整合一定的资源解决软件汇总的一些相关问题。
从细节上Spring核心主要解决如下几个问题:

  1. 对象的创建(通过工厂如何创建?)
  2. 对象的管理(重点管理对象依赖关系)
  3. 。。。

回顾之前使用一个对象时,如何创建对象的?
1、直接创建(例如:new Point)

Date date = new Date()

2、通过静态工厂 (例如: Calendar.getInstance())

class DateUtils{
	public static Date getInstance(){
		return new Date();
	}
}

Date date = DateUtils.getInstance()

3、假如不知道有这个类,如何创建?通过动态工厂创建对象(根据配置信息创建对象)

//创建一个beans.xml文件
<?xml version="1.0 encoding="UTF-8">
<beans>
	<bean id="date" class="java.util.Date"/>
</beans>

//解析配置文件,基于反射创建、管理对象
/**
* 需求
* 构建ApplicationContext对象时,读取指定的文件(xml),根据配置创建对象,并将对象信息存储到map,需要对象时,从map中获取
* */
public class ApplicationContext{
    private static Map<String,Object> beanMap = new HashMap<>(String,Object);
	public   ApplicationContext(Sring file){
		init(file);
    }
    /**初始化对象,然后存储到map*/
    private void init(String file){
    	//读取指定的文件
        //解析对象
        //创建对象
        //存储对象
	}
	
	 /**从map中获取对象*/
   public   Object getBean(String key){
	   return beanMap.get(key);
	}
	
     /**释放资源*/
    private void close(){
    	beanMap.clear();
    	beanMap = null;
    }
}

//通过动态工厂创建对象(根据配置信息创建对象)
ApplicationContext ctx = new ApplicationContext(beans.xml);
Date date3 = (Date)ctx.getBean("date");
ctx.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值