Spring概念:Spring框架由Rod Johnson开发,2004年公布了Spring框架的第一版。Spring是一个从理论开发中抽取进去的框架,因而它实现了大量开发中的通用步骤,留给开发者的仅仅是与特定利用相干的局部,从而大大提高了企业应用的开发效率。
Spring长处:
- 低侵入式设计,代码的净化极低。
- 独立于各种应用服务器,基于Spring框架的利用,能够真正实现Write Once,Run Anywhere的承诺。
- Spring的IoC容器升高了业务对象替换的复杂性,进步了组件之间的解耦。
- Spring的AOP反对容许将一些通用工作如平安、事务、日志等进行集中式治理,从而提供了更好的复用。
- Spring的ORM和DAO提供了与第三方长久层框架的良好整合,并简化了底层的数据库拜访。
- Spring的高度开放性,并不强制利用齐全依赖于Spring,开发者可自在选用Spring框架的局部或全副。
Spring核心技术: IoC和AOP,可能实现类之间、模块之间的解耦合。
IoC:IoC(管制反转)就是依赖倒置准则的一种代码设计思路。就是把原先在代码外面须要实现的对象创立、对象之间的依赖,反转给容器来帮忙实现。
Spring IOC容器通过xml,注解等其它形式配置类及类之间的依赖关系,实现了对象的创立和依赖的治理注入。实现IOC的次要设计模式是工厂模式。
IoC技术实现:DI是IoC的技术实现, DI(Dependency Injection)依赖注入,只须要在程序中提供要应用的对象的名称就能够,至于对象在容器中如何创立、赋值、查找都由容器外部实现。Spring是应用DI实现了IoC的实现,Spring底层创建对象应用的是反射机制。
应用IoC,由Spring创建对象实现步骤:
1. 创立maven我的项目
2. 退出maven的依赖:Spring的依赖,junit依赖
<dependencies> <!--Spring依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--单元测试依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
3. 创立类(接口和实现类):创立类和没有应用框架一样,就是一般类。
4. 创立Spring须要应用的配置文件,申明类信息,这些类交由Spring创立和治理
Spring的配置文件:
- beans:是根标签,Spring把java对象称为bean。
- spring-beans.xsd:是束缚文件,和mybatis指定 .dtd是一样的。
通知Spring创建对象:
首先要申明bean,一个bean标签申明一个对象,就是通知Spring要创立某个类的对象。
id:对象的定义名称,惟一值。Spring就是通过这个名称找到对象。
class:类的全限定名(不能是接口,因为Spring是反射机制创建对象,必须是类)
<bean id="someServiceImpl" class="com.cn.spring.serviceImpl.SomeServiceImpl"></bean>
5. 测试Spring创立的对象
应用由Spring创立的对象:
- 指定Spring配置文件的名称
String config="ApplicationContext.xml";
创立示意Spring容器的对象,ApplicationContext;
- ApplicationContext就是示意Sprring容器,通过容器获取对象;
- ClassPathXmlApplicationContext:示意从类门路中加载Spring的配置文件(在target上面读取指定配置文件);
ApplicationContext ac=new ClassPathXmlApplicationContext(config);
从容器中获取对象:
留神:getBean("配置文件中bean的id值");因为getBean返回值类型是Objecct类型的所以须要强转;SomeService ss=(SomeService) ac.getBean("someServiceImpl");
测试后果:
package com.cn.spring;import com.cn.spring.service.SomeService;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestSpring { @Test public void test01(){ String config="ApplicationContext.xml"; ApplicationContext ac=new ClassPathXmlApplicationContext(config); SomeService ss=(SomeService) ac.getBean("someServiceImpl"); ss.doSome(); }}
未完待续。。。。。。