关于spring框架工作原理的初解

一:spring基本概念

1)struts2是web框架,hibernate是orm框架

2)spring是容器框架,创建bean,维护bean之间的关系

3)spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件,并且维护各个层的关系

二:spring核心原理

1.IOC控制反转

概念:控制权由对象本身转向容器,由容器根据配置文件创建对象实例并实现各个对象的依赖关系。

核心:bean工厂

IoC(Inverse of Control)的字面意思是控制反转,它包括两个内容:

  • 其一是控制
  • 其二是反转

那到底是什么东西的“控制”被“反转”了呢

对于软件来说,即是某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定。

但是,因为IoC确实不够开门见山,因此业界曾进行了广泛的讨论,最终软件界的泰斗级人物Martin Fowler提出了DI(依赖注入:Dependency Injection)的概念用以代替IoC。

即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。“依赖注入”这个名词显然比“控制反转”直接明了、易于理解。

2.AOP面向切面编程

a.静态代理

根据每个具体类分别编写代理类

根据一个接口编写一个代理类

b.动态代理

针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

三:简单的Spring入门案例

1.编写一个类:UserService

  1. package com.cloud.service;
  2. public class UserService {
  3. private String name;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public void sayHello(){
  11. System.out.println("hello:"+name);
  12. }
  13. }

2.编写核心配置文件:applicationContext.xml

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  7. http://www.springframework.org/schema/mvc
  8. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.2.xsd
  11. http://www.springframework.org/schema/aop
  12. http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  13. http://www.springframework.org/schema/tx
  14. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
  15. <!-- 在容器中配置bean对象 -->
  16. <!-- 下面这句等价于:UserService userService = new UserService() -->
  17. <bean id="userService" class="com.cloud.service.UserService">
  18. <!-- 等价于:userService.setName("SpringName"); -->
  19. <property name="name">
  20. <value>SpringName</value>
  21. </property>
  22. </bean>
  23. </beans>

3.编写测试类:Test

  1. package com.cloud.test;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.cloud.service.UserService;
  5. public class Test {
  6. public static void main(String[] args) {
  7. ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  8. UserService userService = (UserService) ac.getBean("userService");
  9. userService.sayHello();
  10. }
  11. }

四:spring原理总结

1.使用spring ,没有new对象,我们把创建对象的任务交给spring框架。

通过new XmlBeanFactory(“applicationContext.xml”)等方式即可启动容器。在容器启动时,Spring根据配置文件的描述信息,自动实例化Bean并完成依赖关系的装配,从容器中即可返回准备就绪的Bean实例,后续可直接使用之。 
   Spring为什么会有这种“神奇”的力量,仅凭一个简单的配置文件,就能魔法般地实例化并装配好程序所用的Bean呢?这种“神奇”的力量归功于Java语言本身的类反射功能。 
2.spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可。

时间: 2025-01-04 21:34:55

关于spring框架工作原理的初解的相关文章

spring mvc 工作原理

SpringMVC框架介绍 1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架.通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术.Velocity.Til

Spring的工作原理核心组件和应用

Spring框架 Spring 是管理多个java类的容器框架,注意是类不管理接口. Spring 的主要功能 Ioc 反转控制和 DI 依赖注入. 注入的方式可以是构造函数赋值也可以是 set方法赋值推荐用set方法赋值 在Spring一加载的阶段就实例化.和初始化(注入值的话)在Spring配置文件中的多个java类.等待用户的调用,用服务器端的缓存消耗换取客户端的快速响应. Ioc:反转控制.当实例化一个bean类时,传统的操作方式是由调用者进行实例化.在spring中,不再由调用者进行实

Spring MVC工作原理

Spring MVC工作流程图 图一 图二  Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获: 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI).然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回: 3.

Spring @Transactional工作原理

本文将深入研究Spring的事务管理.主要介绍@Transactional在底层是如何工作的.之后的文章将介绍: propagation(事务传播)和isolation(隔离性)等属性的使用 事务使用的陷阱有哪些以及如何避免 JPA和事务管理 很重要的一点是JPA本身并不提供任何类型的声明式事务管理.如果在依赖注入容器之外使用JPA,事务处理必须由开发人员编程实现. 1 2 3 4 5 6 7 8 9 10 11 12 UserTransaction utx = entityManager.ge

Spring的工作原理

一.什么是Spring (1).Spring真正的精华是它的Ioc模式实现的BeanFactory和AOP,它自己在这个基础上延伸的功能有些画蛇添足. (2). Spring它是一个开源的项目,而且目前非常活跃:它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块:它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用I

spring入门--Spring框架底层原理

上一篇的博客,我们可以看出来,spring可以维护各个bean (对象),并向其中注入属性值.那么,如果们要把一个对象的引用注入另外一个对象呢?应该怎么处理呢? 我们知道,对于对象中的属性来说,我们注入属性的方式为:在配置文件中使用property标签. <property name="对象属性名称" > <value>要注入的内容</value> </property> 那么如果我们的类中有对另一个对象的引用呢?这个时候,其实类似于注入

浅析CodeIgniter框架工作原理

CodeIgniter(以下简称CI,官网以及中国站)是一个流行的PHP框架,小巧但功能强大,简洁轻量同时拥有很好的扩展性,在国内也比较受欢迎.另一方面,CI却没有与时俱进,并不支持PHP5.3之后的一些特性,导致它更适合PHP5.2及之前的项目.虽然如此,但CI仍是一个优秀的框架,而且内核较小,源码优雅,适于学习. CI易于使用,可以方便的开发出web应用.先来复习一下CI的工作流程图(此处内容引用自http://codeigniter.org.cn/user_guide/overview/a

Spring框架-AOP原理

定义:面向切面编程,所谓面向切面编程,是一种通过预编译的方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术. AOP中比较重要的七个术语: 增强处理(ADVICE) 前置增强 后置增强 环绕增强.异常抛出增强.最终增强等类型 切入点 连接点 切面 目标对象 AOP代理 织入 原文地址:https://www.cnblogs.com/dongyaotou/p/12114749.html

Spring学习之旅(四)Spring工作原理再探

上篇博文对Spring的工作原理做了个大概的介绍,想看的同学请出门左转.今天详细说几点. (一)Spring IoC容器及其实例化与使用 Spring IoC容器负责Bean的实例化.配置和组装工作有两个接口:BeanFactory和ApplicationContext.其中ApplicationContext继承于BeanFactory,对企业级应用开发提供了更多的支持.在实际应用中都是用该接口. 1)实例化Spring容器(主要有四种) 1.ClassPathXmlApplicationCo