1. Spring框架简介及官方压缩包目录介绍
  2. 工厂模式
  3. Spring环境搭建
  4. IoC详解
  5. Spring创建Bean的三种方式(包含两种工厂方式)
  6. scope属性讲解
  7. DI详解
  8. Spring中几种注入方式
  9. Spring解析properties文件
  1. Spring框架简介及官方压缩包目录介绍

  1. 主要发明者:Rod Johnson

  2. 轮子理论推崇者:

    2.1 轮子理论:不用重复发明轮子.

    2.2 IT行业:直接使用写好的代码.

  3. Spring框架宗旨:不重新发明技术,让原有技术使用起来更加方便.

  4. Spring几大核心功能

    4.1 IoC/DI    控制反转/依赖注入

    4.2 AOP      面向切面编程

    4.3 声明式事务.

    4.4 采用模板方式对其他技术的支持

    4.5 spring的定时器

    5.注意spring中的不同的版本中。包的结构以及名称、数量都会有变化。

二.工厂模式

工厂模式时候实例化对象的一种设计模式。可以降低对象之间的耦合度。通过工厂对象来解耦。更符合程序设计开闭原则。

        1. 简单工厂

        2. 抽象工厂

        3. 通用工厂

三.Spring环境搭建

1.导入jar包

基本jar包

2.创建spring的配置文件

2.1spring的配置文件可以叫任意的名称。默认的习惯于applicationContext.xml

2.2spring的配置文件可以在项目的任意位置。一般默认的我们会放到src的根下。

2.2.1如果没有添加约束文件。需要自己手动或者联网状态下载spring的约束文件

3.在spring的配置文件中通过<bean>标签来告知spring管理哪个对象的生命周期

3.1<bean> id:表示唯一的一个标记。不能重复

3.2<bean> class:把哪个类实例化。

4.启动spring框架

4.1启动时指定创建哪个IOC容器

4.1.1BeanFactry:基本的IOC容器。只是缓存对象。

4.1.2ApplicationContext:高级IOC容器。是beanFactory的子接口 扩展了BeanFactory的能力。添加了如 解析properties 国际化等处理

三.IoC详解

1.IOC(Inversion of contorl)控制反转

2.控制:实例化对象的过程

3.反转:原来实例化一个对象的过程他的控制权是掌握在我们程序员自己手中的。而现在整个对象创建过程完全交由spring来负责。

4.容器(container)并不是值的是web容器。他不能处理请求。该容器是指,spring缓存对象的集合(Map<String,Object>)。

 

四.Spring创建Bean的三种方式(包含两种工厂方式)

 

1.BeanFactory与ApplicationContext对象的区别

1.1创建对象的时间

BeanFactory是在调用getBean方法时,先去创建对象。

ApplicationContext是在启动spring框架时就讲所有的对象创建好。

1.2 能力上的区别

BeanFactory只是你一个基本的IOC容器。只能缓存对象没有额外的能力。而ApplicaitonContenxt可以操作properties,国际化等。。。

1.使用无参的构造方法

Spring的配置文件

<bean id="suibian" class="com.bjsxt.dao.SpringTest"></bean>

2.使用工厂模式来创建对象

<!-- 使用工厂模式来构建对象 -->

<!-- 1.配置能够产生对象的工厂 -->

<bean id="factory" class="com.bjsxt.commons.ObjectFactory"></bean>

<!-- 告知spring哪个工厂中调用的哪个方法 -->

<bean id="test" factory-bean="factory" factory-method="createSpringTest"></bean>

4.使用工厂中的静态方法来获取对象

<!-- 调用工厂中的静态方法获取对象 -->

<bean id="test" class="com.bjsxt.commons.ObjectFactory"  factory-method="createSpringTest"></bean>

五.scope属性讲解

Scope属性是spring配置文件中的<bean>标签的属性。他决定了采用什么方式来创建对象(单例,多例) scope的取值范围为:

Prototype:多例

Singleton:单例(默认值)

六.DI详解与Spring中几种注入方式

1.DI:dependence injection

2.使用构造方法完成值的注入

<constructor-arg index="" name="" type="" value=""></constructor-arg>

2.1.index: 表示构造方法中的参数的位置。注意从0开始

2.2.name:按照构造方法的参数的名称完成注入。

2.3.type:根据类型匹配位置

2.4.value:注入的值(value一般用于存放基本数据类型+String)

3.基于属性的注入方式

3.1 要求类中必须要含有一个无参的构造方法。

3.2 要求属性必须提供set方法。

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="msg" value="lisi"></property>

</bean>

4.注入其他类型

4.1 注入set类型

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<!-- <property name="msg" value="lisi"></property> -->

<property name="set">

<set>

<value>a</value>

<value>b</value>

<value>c</value>

</set>

</property>

</bean>

4.2 注入List类型

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="list">

<list>

<value>aa</value>

<value>bb</value>

<value>cc</value>

</list>

</property>

</bean>

4.3 注入一个Map

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="map">

<map>

<entry key="key1">

<value>aaa</value>

</entry>

<entry key="key2">

<value>bbb</value>

</entry>

</map>

</property>

</bean>

4.4 注入一个properties

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="prop">

<props>

<prop key="key1">

aaaa

</prop>

<prop key="key2">

bbbb

</prop>

</props>

</property>

</bean>

4.5 注入springIOC容器中的对象

要求注入的对象与被注入的对象都需要在ioc容器中存在。

<bean id="userDao" class="com.bjsxt.dao.UserDaoImpl"></bean>

<bean id="userServie" class="com.bjsxt.service.UserServiceImpl">

<property name="userDao">

<ref bean="userDao"/>

</property>

</bean>

七.Spring解析properties文件

1.通过在spring的配置文件中开启操作properties文件的工具类。

<!-- 配置解析properties工具类 -->

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="location">

<value>/config.properties</value>

</property>

</bean>

2.以后我们会使用命名空间来开启这个工具类

以后再讲。。。。。

01---Spring框架的更多相关文章

  1. 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

  2. 01 Spring框架 基本介绍

    相信学习java,并且走Web道路的道友都应该知道Spring的大名,它的地位相信也不需要我在这里多说什么,接下来的文章就Spring的配置和使用来进行一些讲解. 首先学习框架我们都要考虑和做到以下几 ...

  3. spring框架总结(01)

    1.spring是什么? sprint其实就是一个开源框架,是于2003年兴起的一个轻量级的java开发框架,是有Road Johnson创建的,简单的来说spring是一个分层的JavaSE/EE( ...

  4. Spring 框架基础(01):核心组件总结,基础环境搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...

  5. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

  6. 回顾Spring框架

    Spring框架: 传统JavaEE解决企业级应用问题时的"重量级"架构体系,使它的开发效率,开发难度和实际的性能都令人失望.Spring是以一个 救世主的身份降临在广大的程序员面 ...

  7. Spring框架简单介绍

    原文地址:  http://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多 ...

  8. spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包

    下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...

  9. Spring学习之旅(二)极速创建Spring框架java Web工程项目

    编译工具:eclipse 1)创建Web工程:spring_web_helloworld 2)导入所需jar包: 3)创建实体类:同上篇博文 4)创建配置文件hellobean.xml.同上篇博文 不 ...

  10. Spring框架+Struts2框架第一次整合

    1:Spring框架和Struts2框架如何整合??? Spring 负责对象创建 Struts2 用Action处理请求 2:Spring与Struts2框架整合的关键点: 让struts2框架ac ...

随机推荐

  1. LINUX 笔记-文件名的匹配

    特殊的匹配符号: * 匹配文件名中的任何字符串,包括空字符串 ? 匹配文件名中的任何单个字符串 [...] 匹配[]中包含的任何字符 [!...] 匹配[]中非感吧号!之后的字符

  2. vue 从入门到精通(二)

    上一篇总结了一些vue的理论知识,如果你没看懂的话--那返回去继续去看啊!反正我要开始第二篇了. vue提供了大量的指令,比如:v-if,v-bind,v-on--太多,多写项目,多看API,这里就不 ...

  3. Xcode9 FFmpeg冲突问题

    升级Xcode9之后,工程中FFmpeg中的avutil.h下的AVMediaType与系统的AVFoundation框架冲突了. 报错信息:Typedef 'AVMediaType' cannot ...

  4. gridContro使用随记

    gridControl设置列宽自动适应内容:绑定数据后调用如下代码即可设置.gridControl1.DataSource = m_pTablegridView1.BestFitColumns(); ...

  5. hbase-1.2.5完全分布式部署

    详细配置参考http://abloz.com/hbase/book.html#distributed ,2.2.2.2小节 1.修改hbase-site.xml文件.添加如下配置 cluster为ha ...

  6. struts2(四)之输入校验

    前言 这个本来是昨天就写好的,但是不知道为什么没有保存成功!但是今天起来再写一遍就当巩固一下知识吧. 一.输入校验概述 在以前我们写一个登录页面时,并没有限制用户的输入,不管用户输入什么,我们都存入数 ...

  7. babel从入门到入门

    babel从入门到入门 来源 http://www.cnblogs.com/gg1234/p/7168750.html 博客讲解内容如下: 1.babel是什么 2.javascript制作规范 3. ...

  8. Special Fish

    Special Fish Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化

    第1章 软硬链接 1.1 硬链接 1.1.1 含义 多个文件拥有相同的inode号码 硬链接即文件的多个入口 1.1.2 作用 防止你误删除文件 1.1.3 如何创建硬链接 ln 命令,前面是源文件  ...

  10. RPA(Robotic Process Automation)的概要介绍

    最近因为公司业务的需要,开始关注RPA的内容,奈何国内相关的信息太少,只能硬着头皮啃英文了. 下面记录的内容作为学习笔记,有不对的地方请大家指教. 首先RPA(Robotic Process Auto ...