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. Windows系统下Nginx的安装与配置

    Nginx是lgor Sysoev在2004年的时候为俄罗斯访问量第二大的rambler.ru站点设计开发的,发布至今,凭借开源的力量,已经接近成熟与完善.其功能丰富,可作为HTTP服务器,也可作为反 ...

  2. Oracle:sqlplus前缀显示当前用户

    第一步:进入SQLPLUS的按照目录,cd $ORACLE_HOME/sqlplus/admin 第二步:查找ll     vi  glogin.sql 第三步:插入 命令行模式,Go, set sq ...

  3. LeetCode 88. Merge Sorted Array(合并有序数组)

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  4. SAP开发快捷键

    F1 帮助     F2 回车确认(在某些地方可用,比如ABAP)     F3 返回     F4 选择输入项     F5 新增     F6 复制为...     F7 全选     F8 选择 ...

  5. MFC程序使用GTest搭建测试框架

    一.起源 最近对单元测试比较感兴趣,之后就上网搜了一些测试的框架,C++项目使用的测试框架基本上都使用的GoogleTest,之后就开启了gtest的学习之路. 主要是根据<玩转Google开源 ...

  6. CodeForces - 846F Random Query(期望)

    You are given an array a consisting of n positive integers. You pick two integer numbers l and r fro ...

  7. css基础语法三

    []伪类选择器] 1.写法: 伪类选择器,在选择器后面,用:分隔,紧接伪类状态: eg : .a:link 2. 超链接的伪类状态: :link - 未访问状态 :visited - 已访问状态 :h ...

  8. Day1作业-模拟登录

    # /usr/bin/env python# -*- coding: utf-8 -*-# Author:jenvid.yangimport getpassimport shutiluserspwd ...

  9. Windows 配置 allure report 环境

    1:配置Java环境(运行allure 需要) 2:安装powershell 3:安装scoop方法 :运行 powershell 输入 : iex (new-object net.webclient ...

  10. ruby 异常处理 begin rescue end

    begin 代码1 rescue 代码 end 如果执行 代码1 发生异常 则转至 代码2 若正常,则执行完跳出