Spring的两大核心特性:IOC、AOP

  IOC:控制反转、依赖注入,它并不是一种技术实现,而是一种思想。把一些相互依赖对象的创建、协调工作交给Spring容器来管理,每个对象只需要关注其自身的业务逻辑关系就可以了,由Spring获取对象控制。

  AOP:面向切面编程,被定义为促使系统实现关注点的分离的技术。

BeanFactory和ApplicationContext的区别

1、BeanFactory:Bean工厂,用作于bean生命周期的管理

2、ApplicationContext:不仅仅有BeanFactory的概念,还有一个应用系统的上下文概念,初衷:对外暴露一个综合API.

BeanFactory的生命周期

https://blog.csdn.net/a327369238/article/details/52193822

什么是bean

  简单说是类,是可重复使用的java组件。所谓组件就是由一个或多个类可内部自行管理和运行,外部不了解其内部的信息或运行方式的群体。

Spring IOC原理

  控制反转、依赖注入,利用了工厂模式

  将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。

  spring的注入方式有两种:设置注入和构造注入

  设置注入:直观、自然

  构造注入:可以在构造器中决定依赖关系的顺序。

  

Spring AOP原理

  面向切面编程,利用了代理模式

  AOP可以说是对OOP的补充和完善,将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。

  实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码.

  aop在spring中主要表现为两个方面:

    1、aop提供声明式事务管理

    2、spring支持用户自定义切面

  aop框架具有的两个特征:

    1、各个步骤之间的良好隔离

    2、源代码无关性

Spring的优点

  1、降低组件之间的耦合,实现系统各层的解偶

  2、可以使用容易提供的众多服务,如事务管理、消息服务等

  3、容器提供单例模式支持

  4、容器提供了aop技术,利用它很容易实现如权限拦截,运行期监控等功能

  5、spring对主流的框架提供了支持,如:hibernate、jpa、struts等

  6、spring属于低侵入模式,代码的污染极低

  7、独立于各种应用服务器

  8、容器提供了众多辅助类,能加快应用的开发

  9、spring的di机制降低了业务对象替换的复杂性

  10、spring的高度开放性,并不强制应用完全依赖于spring,开发者可以自由选择spring的部分或全部

  

  

Java核心知识盘点(三)- 框架篇-Spring的更多相关文章

  1. Java核心知识盘点(二)- 缓存使用

    Redis有哪些数据类型 String.Hash.List.Set.ZSet String:字符串 Hash:哈希 Set:集合 List:列表 ZSet:有序集合 Redis内部结构 1.Redis ...

  2. Java核心知识盘点(一)- 数据存储

    MySQL 索引使用的注意事项 1.索引的目的:在于提高查询效率,插入和更新的操作,数据库的操作是慢的,但是查询操作会非常快,索引可以对表中一个或多个字段进行加索引动作. 2.索引的类型: 1.唯一索 ...

  3. java框架篇---spring AOP 实现原理

    什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...

  4. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  5. 阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)

    由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 整理了一份Java核心知识点.覆盖了JVM.锁.并发.Java反射.Spring原理.微服务.Zooke ...

  6. 阿里 P8 高级架构师吐血总结的 《Java 核心知识整理&面试.pdf》| 免费分享

    最近在网上发现一份非常棒的 PDF 资料,据说是阿里 P8 级高级架构师吐血总结的, 其中内容覆盖很广,包括 Java 核心基础.Java 多线程.高并发.Spring.微服务.Netty 与 RPC ...

  7. Java基础知识盘点(三)- 线程篇

    创建线程的方式及实现 一.继承Thread类创建线程类 1.定义Thread的子类,并重写run方法,因为该方法的方法体就是代表了线程要完成的任务,因此run方法又叫做执行体. 2.创建Thread子 ...

  8. java框架篇---spring IOC 实现原理

    IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩.java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用 ...

  9. java框架篇---spring hibernate整合

    在会使用hibernate 和spring框架后 两个框架的整合就变的相当容易了, 为什么要整合Hibernate?1.使用Spring的IOC功能管理SessionFactory对象 LocalSe ...

随机推荐

  1. python range的用法小题

    题目(1)for i in range(10): print(i) 结果:123456789 题目(2) for lst in range(100): if lst % 7 == 0 and str( ...

  2. Linux给MySQL创建用户,并分配权限

    //登录MYSQL 使用root账号登录 @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User ...

  3. 关于.net后台的异步刷新的问题

    我在.net后台做了一个功能.这里我简单话的描述这个功能. 一个下拉框,然后选择其中的不同的下拉信息,下面会有不同的材料表的显示. 其中一个表中如果有必填的字段,那么你切换这个的时候,会导致下拉框不会 ...

  4. 用matlab画两个曲面的图

    求助!!用matlab画两个曲面的图 这是我写的程序,但是运行不出来,麻烦帮我修改一下,谢谢!!clearallcloseall[x,y]=meshgrid(0:.1:60);z1=(25*y-25* ...

  5. Lintcode: Knight Shortest Path

    Given a knight in a chessboard (a binary matrix with 0 as empty and 1 as barrier) with a source posi ...

  6. 洛谷P2611 信息传递

    并查集裸题,记录每个点的胜读,取个min就好了 #include<stdio.h> #include<string.h> #include<algorithm> u ...

  7. 佳佳的Fibonacci

    #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...

  8. redis命令行操作

    打开shell,首先开启redis服务,在保证服务开启的情况下,打开客户端. 然后可以根据文档,进行命令行试验.

  9. jdk5升级至jdk8框架版本选型

    spring-framework-4.3.18.RELEASE 4.3.x+:JDK8  Spring JDK Version Range Spring Framework 5.1.x: JDK 8- ...

  10. 在java中使用Mysql数据库,如何在MyBatis的xml里面处理时间为Int类型的数据

    主要是将显示在页面上的数据变成日期格式,而不是相应的毫秒数,具体的做法如下: 1.首先需要在相关的xml文件里面修改时间为下面语句,其中reg_time为要修改的日期列名 FROM_UNIXTIME( ...