1、Spring初识
1、Spring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的 JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。 Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。 Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming, AOP)。
2、核心内容
spring是一个轻量级的开源框架。
spring为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。spring是一个IOC和AOP的容器框架。
IOC:控制反转
AOP:面向切面编程
容器:包含并管理应用对象的生命周期
3、使用spring的优点
3.1、Spring通过DI、AOP和消除样板式代码来简化企业级Java开发
3.2、Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它 将Spring扩展到不同的领域,如Web服务、REST、移动开发以及NoSQL
3.3、低侵入式设计,代码的污染极低
3.4、独立于各种应用服务器,基于Spring框架的应用,可以真正实现 Write Once,Run Anywhere的承诺
3.5、Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
3.6、Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行 集中式处理,从而提供了更好的复用
3.7、Spring的ORM和DAO提供了与第三方持久层框架的的良好整合, 并简化了底层的数据库访问
3.8、Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可 自由选用Spring框架的部分或全部
3.9、任何一个语言或者任何一个框架想要立于不败之地,那么很重要的 就是它的生态。
4、spring的模块划分图
Data Access/Integration:数据的获取/整合模块,包括了JDBC,ORM,OXM,JMS和事务模块
Web:提供面向web整合特性
5、IOC(Inversion of Control):控制反转
5.1、基本概念
IOC是一种设计思想,在Java开发中,将你设计好的对象交给容器控制,而不是显示地用代 码进行对象的创建。(创建对象交给spring来处理,不用 new Object()等等来操作了)
把创建和查找依赖对象的控制权交给 IoC 容器,由 IoC 容器进行注入、组合对象之间的关 系。这样对象与对象之间是松耦合、功能可复用(减少对象的创建和内存消耗),使得程序 的整个体系结构可维护性、灵活性、扩展性变高。 所谓IOC ,就简短一句话:对象由 spring来创建、管理,装配!
5.2、为什么使用IOC?
5.2.1 接口分离原则ISP(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
5.2.2 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
具体实现依赖抽象,下层依赖上层。 依赖倒置原则使鼠标、键盘和电脑成为独立的的互不相干的对象,当电脑(上 层)没有鼠标可以正常启动但是鼠标(下层)没有电脑则一无是处 ,控制权就被反转 了(IOC)。 所以鼠标需要依赖USB(DI)才能使用。
之前——正转: 主板焊接>鼠标 电脑没有鼠标则无法启动
现在——反转: 电脑<依赖鼠标 引入DI可以实现IOC
IOC是DIP的设计原理,DI是IOC的具体实现
5.3 如何使用 IOC?
5.3.1 导入jar包---配置xml
a、导入相关的jar包
b、配置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"> <bean id="user" class="com.zhl.entity.User"></bean> </beans>
c、编写测试类
public class IocTest { @Test public void test(){ ApplicationContext context = new ClassPathXmlApplicationContext("spring-ioc.xml"); User user = context.getBean(User.class); } }
5.3.2 maven+注解+xml
a、配置maven依赖
b. 去pom.xml
原文地址:https://www.cnblogs.com/zhl--yeyan/p/15375608.html
- Linux下通过rdesktop连接Windows远程桌面
- 微信iOS收款到账语音提醒开发总结
- React Native按需加载 手Q狼人杀探索之路
- nginx日志切割及7天前的历史日志删除脚本
- 《ios爆内存问题解决方案-OOMDetector组件》
- Linux/SUSE安装svn客户端的问题记录
- 《广研Android卡顿监控系统》
- 替换WordPress默认搜索为百度站内搜索(知更鸟主题可照搬)
- 《Android插件化技术——原理篇》
- 利用Centos或RedHat的iso镜像搭建本地yum仓库
- QUIC协议初探-iOS实践
- Golang语言社区--【基础知识】常量
- 服务器日志备份超节省空间的思路
- 《企鹅电竞weex实践—— iOS SDK的小九九》
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android面试知识笔记:那些年面试官常问的知识点...(附详细解析)
- 聊聊dubbo-go的failbackCluster
- Docker环境准备
- js实现HTML页面时钟动态显示
- WordPress标题的分隔符-被转义为–的解决办法
- WordPress网站实现下雪特效,云体验下雪的赶脚
- 小知识:后台执行Oracle创建索引免受会话中断影响
- Android:那些关于Fragment生命周期,你了解多少?
- 前端面试(题三)js
- .NET Core EFCore零基础快速入门简单使用
- vscode .vue文件 格式化配置
- 使用代码删除SAP CRM的附件(attachment)数据
- node版本管理器:nvm 和 n区别
- Apache - Hive环境部署与快速入门
- 编译和调试openjdk8