Spring核心概念和案例
一、Spring概念
1.Spring框架概述
轻量级的Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建,
Spring框架提供了一个开发平台,用于整合其他技术,例如Struts,Hibernate,Mybatis等。
2.Spring优点
低侵入式设计
独立于各种应用服务器
依赖注入特性将组件关系透明化,降低了耦合度
面向切面编程特性允许将通用任务进行集中式处理
与第三方框架的良好整合
3.Spring家族
Spring框架大约由20个功能模块组成,这些模块又被分为6部分,分别是Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation、Test,如下图所示。

二、SpringIoC
1.Spring概念
IoC(Inversion of Control),即控制反转,也称为依赖注入(Dependency Injection,DI)。控制反转是面向对象编程中的一种涉及理念,用来降低程序代码之间的耦合度、依赖,它也是Spring的一个核心概念。
` 2.实现思想
将组件对象的控制权从代码本身转移到外部容器
组件化的思想:分离关注点,接口和实现分离
依赖的注入:将组件的构建和使用分开(运行时注入)
目的:解耦合。实现每个组件时只关注组件内部的事情
要点:明确定义组件间的接口
三、AOP机制
1.概念
AOP又被称为面向方面编程,其实就是在面向对象的基础上又进行了一次封装,由于面向对象是将共同的属性和方法封装起来,
而面向切面编程则是面向共同的方面逻辑,如事务和异常,所有的对象都会产生这样一个共性的方面。
它将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
2.什么是面向切面编程
是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术
3.为什么使用AOP
3.1 就是为了方便,把自己做的事情都让Spring容器去做了。用了AOP能让开发人员少写很多代码
3.2 就是为了更清晰的逻辑,可以让我的业务逻辑去关注自己本身的业务,而不去想一些其他的事情。这些其他的事情包括:安全,事物,日志等等。
4.OOP与AOP的区别
这两种设计思想在目标上有着本质的差异。具体如下:
OOP:针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分
AOP:针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或者阶段,
以获得逻辑过程中各部分之间低耦合的隔离效果。
四、Spring打印机案例
1.导入依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
2.创建接口、实体类、测试类、配置文件

2.1墨盒
2.2.1创建墨盒接口

2.2.2彩色墨盒类实现墨盒接口

2.2.3黑白墨盒类实现墨盒接口

2.2 纸张
2.2.1 创建纸张接口

2.2.2 A4纸类并实现纸张接口

2.2.3 B5纸类并实现纸张接口

2.3 配置文件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">
<!--注入bean
id相当于当前bean唯一标识
class是bean 的全路径
property注入bean中的属性 必须封装
-->
<!--注入纸张-->
<bean id="a4Paper" class="cn.spring.print.paper.A4Paper"></bean>
<bean id="b5Paper" class="cn.spring.print.paper.B5Paper"></bean>
<!--注入彩色墨盒 Bean的注入都是实现类-->
<bean id="colorInk" class="cn.spring.print.Ink.ColorInk"></bean>
<!--注入黑白墨盒 Bean的注入都是实现类-->
<bean id="grayInk" class="cn.spring.print.Ink.GrayInk"></bean>
<!--打印机-->
<bean id="printer" class="cn.spring.print.print.Printer">
<!--将纸张和墨盒组合起来-->
<property name="paper" ref="b5Paper"></property>
<property name="ink" ref="colorInk"></property>
</bean>
</beans>
2.4 test测试类

Spring核心概念和案例的更多相关文章
- SSM 五:Spring核心概念
第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处 ...
- Spring 核心概念
Spring 核心概念 引言 本文主要介绍 Spring 源码中使用到的一些核心类 1. BeanDefinition BeanDefinition表示Bean定义,BeanDefinition 中存 ...
- 第一章 spring核心概念
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- Spring系列(一):Spring核心概念
一.Spring概念 Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型. 二.Sprin ...
- SSM-Spring-01:Spring的概念+入门案例
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Spring 提起Spring,就会想到企业级框架这个词 企业级系统: 1.大规模:用户数量多,数据规模庞大, ...
- Spring 核心概念以及入门教程
初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...
- Spring核心概念之AOP
一.AOP 的概念 AOP(Aspect Oriented Programming)的缩写,面向切面编程,主要作用就是对代码进行增强处理. 理解面向切面编程的含义:就是在不改变原有程序的基础上为代码增 ...
- Spring核心概念
Spring是一个轻量级的企业级框架,提供了loc容器,aop实现,DAO/OR支持,Web集成等功能,目标是使现有的JAVA EE技术更易用,并促进良好的编程习惯. 依赖注入让组件之间以配置文件的形 ...
- Spring核心概念(二)
IOC/DI IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) . DI(依赖注入):当类A需要使用类B时,那么我们需要为类A的属性赋值类B的对象. 这种现象我们称为依赖注 ...
随机推荐
- SVN增加访问用户
1.在Linux中进入SVN配置文件目录. 2.authz是设置权限的,只读还是可读可写,passwd是增加访问用户的. vim passwd; vim authz;
- MATLAB:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位
问题:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位.上一行溢出时,上上一行的1移动一位, ...
- 利用Python进行数据分析 第8章 数据规整:聚合、合并和重塑.md
学习时间:2019/11/03 周日晚上23点半开始,计划1110学完 学习目标:Page218-249,共32页:目标6天学完(按每页20min.每天1小时/每天3页,需10天) 实际反馈:实际XX ...
- PAT(B) 1089 狼人杀-简单版(Java)逻辑推理
题目链接:1089 狼人杀-简单版 (20 point(s)) 题目描述 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局" ...
- 资深程序员推荐必备书籍 《C语言程序设计》
当下,IT行业发展日趋迅猛,产值成倍增长,高薪的诱惑更是驱使许多人想要进入IT行业发展.为了使大家更全面理解C语言程序设计,由千锋教研院高教产品研发部编著.清华大学出版社倾情出版的<C语言程序设 ...
- PowerBuilder学习笔记之行删除卡死问题
在数据窗口勾选这两个选项后,在删除行数据时会导致系统直接崩溃退出
- 关于memset的赋值(最大值最小值的选择)
memset赋值赋的是ASSCII码转为二进制赋值 比如 memset(,0xff,sizeof()),0xff转为二进制11111111,int为4字节所以最后为111111111111111111 ...
- IDEA使用技巧--将本地项目和git远程项目关联
之前开发没有从头儿搭建过新项目,都是从IDEA配置下项目的git地址,pull代码之后进行开发,提交.这次需要将本地新建的项目push到在git上同样是新建的空项目上去(git上的项目只有工程名和re ...
- puppet工作原理及部署redis主从篇
一.简介 1.国际惯例什么是puppet puppet是一种Linux.Unix.windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统 ...
- Java UpperBound
Java UpperBound /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternational ...