【Spring笔记】1.初识Spring
来源:互联网 发布:二元期权作弊软件 编辑:程序博客网 时间:2024/06/17 02:29
1. Spring简介
Spring是一个开源框架,最早由Rod Johnson创建,是针对JavaBean生命周期进行管理的轻量级容器,而其最根本的使命:简化Java开发。Spring采取了以下4种关键策略: - 基于POJO(Plain Old Java Object)的轻量级和最小侵入性编程; - 通过依赖注入和面向接口实现松耦合; - 基于切面和惯例进行声明式编程; - 通过切面和模板减少样板式代码。
2. Spring特性简介
2.1 IoC(Inversion of Control)
IoC(控制反转),或者说DI(依赖注入),Spring的核心之一。在Spring中,对象无需自己查找或创建与其所关联的其他对象;而是通过容器把需要相互协作的对象引用赋予各个对象。这种创建应用对象之间协作关系的行为通常称为装配(wiring),这也是DI(依赖注入)的本质。
写一段代码:
public class Driver{ private Truck truck; public Driver(){ //与Truck紧耦合 this.truck = new Truck(); } public void drive(){ System.out.println("Driver is driving"+truck.getBrand()); }}
上面这个代码,Driver只能驾驶Truck ,极大的限制了Driver的能力,如果我想让这个Driver开其他种类的车,那么这个Driver就爱莫能助了。这个代码的缺点直观可见,而下面这个代码就更加灵活。
public class Driver{ private Car car; //Car被注入进来 public Driver(Car car){ this.car = car; } public void drive(){ System.out.println("Driver is driving"+car.getBrand()); }}
Car是个抽象类,Driver类没有和特定的Car实现产生耦合,这是依赖倒置原则。而Driver类并没有自行创建Car,而是在构造的时候把Car作为构造器参数传入。这是依赖注入的方式之一,即构造器注入(constructor Injection)。
2.2 AOP(Aspect-Oriented Programming)
DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(AOP)把遍布应用各处的功能分离出来形成可重用的组件。
再写一段代码:
public class Driver{ private Car car; public Driver(Car car){ this.car = car; } public void beforeDrive(){ System.out.println("Before drive..."); } public void drive(){ System.out.println("Driver is driving"+car.getBrand()); } public void afterDrive(){ System.out.println("After drive..."); }}
这个代码很明显有问题,before()和after()方法直接写死在代码中,比如我们要计算每个方法的执行时间,那岂不是每个方法我们都要针对它写一个before和after;写个JDBC程序,每个方法都要开头连接数据库和结尾关闭数据库连接。而AOP可以把这些公共的代码提出来,让这个类、这个方法专心干好自己的本职工作,这也是符合设计模式的单一职责模式。
3. Spring容器(container)简介
容器是Spring框架的核心。Spring容器使用DI管理构造应用的组件,它会创建相互协作的组件之间的关联。在基于Spring的应用中,你的应用对象生存于Spring容器中。Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期。
Spring容器自带多个容器实现,可以归为两种不同的类型:
- bean工厂(由org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的DI支持
- 应用上下文(由org.springframework.context.ApplicationContext接口定义)基于BeanFactory创建,并提供应用框架级别的服务。
应用上下文比bean工厂更常用。
常用的应用上下文:
- AnnotationConfigApplicationContext:从一个或多个Java注解加载Spring应用上下文。
- AnnotationConfigWebApplicationContext:从一个或多个Java注解加载Spring Web应用上下文。
- ClassPathXMLApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
- FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
- XmlWebApplicationContext:从Web应用下一个或多个XML配置文件中加载上下文定义。
阅读全文
2 0
- 【Spring笔记】1.初识Spring
- Spring学习笔记(1)---------初识Spring
- Spring笔记——初识Spring
- 1. spring mvc 初识
- 1.初识Spring boot
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- Spring 初识
- 初识Spring
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- 初识Spring
- 初识Spring
- 初识Spring
- ReactNative入门(1)-入门第一课
- vim使用笔记
- Excel-统计不重复数据的个数,设置单元格不允许出现重复数据
- 我是如何学习安卓开发的
- Android源码解析之动态注册广播接收器的过程分析
- 【Spring笔记】1.初识Spring
- REFERENCES (updating)
- 人事管理系统之基本增删改查的实现以及BaseDao的抽取和封装
- Attempt to invoke virtual method 'android.content.Context cn.bmob.v3.BmobWrapper.getApplicationCont
- Java历史版本下载【新】
- python脚本实现批量更新数据库中字段值
- java中Lock的用法以及Lock与synchronized的区别
- 微信小程序获取formId
- 编译安装及运行单目ORBSLAM2在Ubuntu14.04