您好,欢迎来到华拓网。
搜索
您的当前位置:首页正文

关于spring框架工作原理

来源:华拓网
关于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

package com.cloud.service; public class UserService { private String name;

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public void sayHello(){

System.out.println(\"hello:\"+name); } }

2.编写核⼼配置⽂件:applicationContext.xml

xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:context=\"http://www.springframework.org/schema/context\"

xmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:tx=\"http://www.springframework.org/schema/tx\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-3.2.xsd \">

SpringName

3.编写测试类:Test

package com.cloud.test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cloud.service.UserService; public class Test {

public static void main(String[] args) {

ApplicationContext ac = new ClassPathXmlApplicationContext(\"applicationContext.xml\"); UserService userService = (UserService) ac.getBean(\"userService\"); userService.sayHello(); } }

4: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),使⽤即可。

---------------------------------------------------------------------------------------------------------------------感谢到访!期待您的下次光临!

因篇幅问题不能全部显示,请点此查看更多更全内容