专栏首页java一日一条面试中问的话题Spring工作原理

面试中问的话题Spring工作原理

Spring工作原理 内部最核心的就是IOC了, 动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射 反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。 Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。 Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明 管理的(Spring根据这些配置 内部通过反射去动态的组装对象) 要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。 Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式) Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 也就基本上掌握了Spring. Spring AOP与IOC 一、 IoC(Inversion of control): 控制反转 1、IoC: 概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean 二、AOP(Aspect-Oriented Programming): 面向方面编程 1、 代理的两种方式: 静态代理:  针对每个具体类分别编写代理类;  针对一个接口编写一个代理类; 动态代理: 针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类 Spring 优缺点 它是一个开源的项目,而且目前非常活跃;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等 优点 a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。 b. Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。 c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。 d. 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。 e. Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。 f. 使用Spring构建的应用程序易于单元测试。 g. Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。 h. Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。 i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。 Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的。 缺点:jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器

本文分享自微信公众号 - java一日一条(mjx_java)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于Spring的69个面试问答——终极列表

    这篇文章总结了一些关于Spring框架的重要问题,这些问题都是你在面试或笔试过程中可能会被问到的。下次你再也不用担心你的面试了,Java Code Geeks这...

    哲洛不闹
  • 69 个经典 Spring 面试题和答案

    Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标...

    哲洛不闹
  • 【Spring源码分析】Bean加载流程概览

    之前写文章都会啰啰嗦嗦一大堆再开始,进入【Spring源码分析】这个板块就直接切入正题了。

    哲洛不闹
  • 《Spring实战》读书笔记-第1章 Spring之旅

    Spring是一个开源框架,最早由Rod Johnson创建,并在《Expert Oneon-One:J2EE Design and Development》这...

    Java架构师必看
  • 高频Spring面试题你能答对几个?

    Spring 框架,作为一个非常优秀的轻量级容器,在企业级项目开发中非常受欢迎,Spring 框架也早已成为 Java 后端开发事实上的行业标准,如何用好 Sp...

    java思维导图
  • 想学会 Spring Boot 你必须深刻了解这些概念

    Spring Boot是一个难以理解的框架。在本文中,我们将了解Spring Boot的基础知识,并帮助您了解重要的概念-starter,自动配置和Parent...

    码农小胖哥
  • Spring Boot 到底是个啥?

    Spring 是重量级企业开发框架 EJB(Enterprise JavaBean) 的替代品,是为了解决企业级应用开发的复杂性而创建的,简化开发。通过 依赖注...

    村雨遥
  • 对于Spring,只会 20%,那也太菜了!

    从事 Java相关开发的朋友,应该没有不知道 Spring的,但是80%的人,只了解 Spring 20%的用法,这也就是大家常说的二八定律。

    Java技术栈
  • 为什么你要用 Spring?

    现代 Spring 几乎成为了 Java 在企业级复杂应用开发的代名词,得益于 Spring 轻量简单的设计哲学和其开放包容的生态圈,确实为廉颇老矣,尚能饭否的...

    phoenix.xiao
  • Spring的这七大问题,验证你能否进大厂!

    当程序员当的越久,接触的越多,就会越“迷茫”。像我,分布式好像懂一点,源码也好像懂一点。技术栈越来越多,但是好像哪一点也不精通,就会代码写得越多越“迷茫”。我可...

    Java团长

扫码关注云+社区

领取腾讯云代金券