一、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核心概念和案例的更多相关文章

  1. SSM 五:Spring核心概念

    第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处 ...

  2. Spring 核心概念

    Spring 核心概念 引言 本文主要介绍 Spring 源码中使用到的一些核心类 1. BeanDefinition BeanDefinition表示Bean定义,BeanDefinition 中存 ...

  3. 第一章 spring核心概念

    一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...

  4. Spring系列(一):Spring核心概念

    一.Spring概念 Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型. 二.Sprin ...

  5. SSM-Spring-01:Spring的概念+入门案例

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Spring 提起Spring,就会想到企业级框架这个词 企业级系统: 1.大规模:用户数量多,数据规模庞大, ...

  6. Spring 核心概念以及入门教程

    初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...

  7. Spring核心概念之AOP

    一.AOP 的概念 AOP(Aspect Oriented Programming)的缩写,面向切面编程,主要作用就是对代码进行增强处理. 理解面向切面编程的含义:就是在不改变原有程序的基础上为代码增 ...

  8. Spring核心概念

    Spring是一个轻量级的企业级框架,提供了loc容器,aop实现,DAO/OR支持,Web集成等功能,目标是使现有的JAVA EE技术更易用,并促进良好的编程习惯. 依赖注入让组件之间以配置文件的形 ...

  9. Spring核心概念(二)

    IOC/DI IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) . DI(依赖注入):当类A需要使用类B时,那么我们需要为类A的属性赋值类B的对象. 这种现象我们称为依赖注 ...

随机推荐

  1. Centos7.5 添加环境变量并生效

    配置环境变量用户 jiangshan为例(base) [jiangshan@localhost ~]$ export PATH=$PATH:/usr/local/MATLAB/R2014a/bin/( ...

  2. tomcat+java+redis环境linux安装

    最近要加一个环境测试,自力更生,丰衣足食,记下来下次安装环境速度快点 java jdk-1.80_131 64位 这个jdk 对于初次下载的人要注意,oracel现在不登录不让下载,而注册用户时页面无 ...

  3. lnmp+tp5安装纪要

    1: lnmp : https://lnmp.org/install.html  官网安装帮助 运行命令:wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz ...

  4. Spring 中的统一异常处理

    在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的.因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码. 不过, ...

  5. Python socket 编程(1)

    服务端的创建: import socket server = socket.socket() # 创建一个socke对象 server.bind(('192.168.101.5', 8001)) # ...

  6. opencv模块学习

    一.简介 ''' 分辨率(resolution,港台称之为解析度)就是屏幕图像的精密度,是指显示器所能显示的像素的多少.由于屏幕上的点.线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同 ...

  7. SAS学习笔记50 SAS数据集索引

    在没有索引的情况下,SAS是一条接一条的扫描观测:有索引时,直接跳到该索引对应的观测所在位置.总结一句话就是:节省时间,节省内存,提高效率 当然并不是任何情况下使用索引都能提高工作效率,因为建立索引本 ...

  8. Java架构笔记:用JWT对SpringCloud进行认证和鉴权

    写在前面 喜欢的朋友可以关注下专栏:Java架构技术进阶.里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦. image.png JWT(JSON WEB TOKEN)是基于RF ...

  9. Visual Studio中找不到.Net Core SDK

    在win 7 64位上安装了.Net Core 2.1 x86 SDK后,又卸载重新安装了.Net Core 3/2 x64 SDK.结果在VS中新建项目时没有.Net Core 3.1 SDK. 在 ...

  10. Python基本数据类型及实例详解

    Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对 ...