SSM Day1

Spring——Spring简介、入门、配置 , IoC和DI思想

Spring 是一个开源框架

Spring 为简化企业级开发而生,使用 Spring,JavaBean 就可以实现很多以前要靠 EJB 才能实现的功能。同样的功能,在 EJB 中要通过繁琐的配置和复杂的代码才能够实现, 而在 Spring 中却非常的优雅和简洁。

Spring 是一个 IOC(DI)和 AOP 容器框架。

Spring 的优良特性

① 非侵入式:基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API

② 依赖注入:DI——Dependency Injection,反转控制(IOC)最经典的实现。

③ 面向切面编程:Aspect Oriented Programming——AOP

④ 容器:Spring 是一个容器,因为它包含并且管理应用对象的生命周期

⑤ 组件化:

Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中 可以使用 XML 和 Java 注解组合这些对象。

一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上 Spring 自身也提供了表述层的 SpringMVC 和持久层的 Spring JDBC)。
6)模块

1、 为什么说Spring是一个一站式的轻量级开源框架呢?

首先轻量级:不是指Spring框架的模块少,数量很轻,而是指Spring框架的非侵入性,即对象可以不必依赖Spring的API类

其次,JavaEE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。

WEB层:SpringMVC
业务层:Spring的IoC
持久层:Spring的JDBCTemplate (Spring的JDBC模板,ORM模板用于整合其他的持久层框架)
Spring提供了JavaEE每一层的解决方案,所以也说Spring是JavaEE的全栈式(full stack)框架。

2.、Spring的优点
跳转到目录

方便解耦,简化开发。
Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。

AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无须手动编程。

方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。

方便集成各种优秀的框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2/Hibernate/MyBatis/Quartz等)的直接支持。

降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等)都提供了封装,使这些API应用难度大大降低。

3、Spring的体系结构

核心容器
核心容器由 spring-core,spring-beans,spring-context 和 spring-expression(SpEL,Spring表达式语言,Spring Expression Language)等模块组成,它们的细节如下:

spring-core:提供了框架的基本组成部分,包括 IoC 和依赖注入功能。

spring-beans:提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。

spring-context:模块建立在由core和 beans 模块的基础上建立起来的,它以一种类似于JNDI注册的方式访问对象。Context模块继承自Bean模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过Servelet容器)等功能

spring-expression:提供了强大的表达式语言,用于在运行时查询和操作对象图。它是JSP2.1规范中定义的统一表达式语言的扩展,支持set和get属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从Spring IoC容器检索对象,还支持列表的投影、选择以及聚合等。

三、IoC和DI思想

IoC : Inversion of Control (控制反转), 其本意就是将原本在程序中手动创建对象的控制权,交给Spring来管理;
1、在没有IoC之前,我们的操作是: 若调用者需要使用某个对象,其自身就得负责该对象及该对象所依赖对象的创建和组装;

2、有IoC之后,调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装;也就是把创建对象的控制权反转给了Spring框架.

DI: Dependency Injection(依赖注入)从字面上分析:IoC :指将对象的创建权,反转给了Spring容器;DI : 指Spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过配置设值给该对象。

IoC从字面意思上很难体现出谁来维护对象之间的关系, Martin Fowler提出一个新的概念一- -DI ,更明确描述了“被注入对象 ( Service对象)依赖IoC容器来配置依赖对象( DAO对象)" .

在这里插入图片描述

ClassPathXmlApplicationContext 默认加载classpath路径下的文件,只需指明对应文件的classpath路径下的配置文件名字即可。

FileSystemXmlApplicationContext : 该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。

WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。

面向接口编程:返回 ApplicationContext (实际上ApplicationContext是一个接口), 即 Spring 的 IOC容器:

ConfigurableApplicationContext 子接口, 提供了一些方法 close(), refresh(), 可以让 ApplicationContext 刷新和关闭。

使用getBean方法,从容器中返回对象实例的三种方式:

签名1: Object getBean (String beanName); // 根据bean对象在容器中的名称来获取

helloSpring = (HelloSpring) factory.getBean(“helloSpring”);

签名2: T getBean(Class requiredType) // 按照指定的类型去寻找bean对象

helloSpring = factory.getBean(HelloSpring.class); // HelloSpring只能对应一个Bean,多个Bean的时候就会报错

签名3: T getBean(String name,@Nullable Class requiredType): 根据bean的类型 + ID 去寻找.

helloSpring = factory.getBean(“helloSpring2”, HelloSpring.class);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值