Spring简单介绍
Spring概念:Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
Spring优点:
- 低侵入式设计,代码的污染极低。
- 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。
- Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
- Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用。
- Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
- Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。
IoC:IoC(控制反转)就是依赖倒置原则的一种代码设计思路。就是把原先在代码里面需要实现的对象创建、对象之间的依赖,反转给容器来帮忙实现。
Spring IOC容器通过xml,注解等其它方式配置类及类之间的依赖关系,完成了对象的创建和依赖的管理注入。实现IOC的主要设计模式是工厂模式。
IoC技术实现:DI是IoC的技术实现, DI(Dependency Injection)依赖注入,只需要在程序中提供要使用的对象的名称就可以,至于对象在容器中如何创建、赋值、查找都由容器内部实现。Spring是使用DI实现了IoC的实现,Spring底层创建对象使用的是反射机制。
使用IoC,由Spring创建对象实现步骤:
1. 创建maven项目 【Spring简单介绍】
文章图片
2. 加入maven的依赖:Spring的依赖,junit依赖
org.springframework
spring-context
5.2.5.RELEASE
junit
junit
4.11
test
3. 创建类(接口和实现类):创建类和没有使用框架一样,就是普通类。
文章图片
4. 创建Spring需要使用的配置文件,声明类信息,这些类交由Spring创建和管理 Spring的配置文件:
- beans:是根标签,Spring把java对象称为bean。
- spring-beans.xsd:是约束文件,和mybatis指定 .dtd是一样的。
首先要声明bean,一个bean标签声明一个对象,就是告诉Spring要创建某个类的对象。
id:对象的定义名称,唯一值。Spring就是通过这个名称找到对象。
class:类的全限定名(不能是接口,因为Spring是反射机制创建对象,必须是类)
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();
}
}
文章图片
未完待续。。。。。。
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- 科学养胃,别被忽悠,其实真的很简单
- SpringBoot调用公共模块的自定义注解失效的解决
- opencv|opencv C++模板匹配的简单实现
- 解决SpringBoot引用别的模块无法注入的问题
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- Apache多路复用模块(MPMs)介绍
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- 简单心理2019春A期+32+张荣
- 《算法》-图[有向图]