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. LeetCode 563. Binary Tree Tilt (二叉树的倾斜度)

    Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the ab ...

  2. LeetCode 111. Minimum Depth of Binary Tree (二叉树最小的深度)

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  3. 解决 iframe 在 ios 上不能滚动的问题

    HTML代码在使用IFRAME或者其他HTML元素时,你需要使用一个元素(如DIV)来包装他们: <div class="scroll-wrapper">  <i ...

  4. EJBCA安装教程+postgresql+wildfly10

    1. 安装环境说明 笔者在本机的虚拟机下进行的安装,数据库已经装好了的. ubuntu16.04 x64 postgresql:9 wildfly10 2. 安装前准备 下载必要软件包(直接到官网下载 ...

  5. Java 链表常见考题总结

    首先定义自定义结点类,存储节点信息: public class Node { Node next=null; int data; public Node(int data){ this.data=da ...

  6. MAC - PhpStorm安装调试环境xdebug

    今天下午一直在捣鼓如何用PhpStorm进行调试,查找了许多资料,零零碎碎的,所以自己弄篇文章记录一下步骤. 安装xdebug 使用brew安装xdebug,语法如下 brew install hom ...

  7. hdu 1011 Starship Troopers(树形DP入门)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. HDU 4267 A Simple Problem with Integers(树状数组区间更新)

    A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  9. gulp learning note

    为啥写这一片文章呢? 主要是为了温故而知新和分享,也是为了更加促进自己的学习! 前端自动化工具很多  有grunt  gulp  webpack 等 这次主要分享下gulp的学习经验,让自己更好的总结 ...

  10. Node.js 常用工具

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...