01---Spring框架
- Spring框架简介及官方压缩包目录介绍
- 工厂模式
- Spring环境搭建
- IoC详解
- Spring创建Bean的三种方式(包含两种工厂方式)
- scope属性讲解
- DI详解
- Spring中几种注入方式
- Spring解析properties文件
Spring框架简介及官方压缩包目录介绍
主要发明者:Rod Johnson
轮子理论推崇者:
2.1 轮子理论:不用重复发明轮子.
2.2 IT行业:直接使用写好的代码.
Spring框架宗旨:不重新发明技术,让原有技术使用起来更加方便.
Spring几大核心功能
4.1 IoC/DI 控制反转/依赖注入
4.2 AOP 面向切面编程
4.3 声明式事务.
4.4 采用模板方式对其他技术的支持
4.5 spring的定时器
5.注意spring中的不同的版本中。包的结构以及名称、数量都会有变化。
二.工厂模式
工厂模式时候实例化对象的一种设计模式。可以降低对象之间的耦合度。通过工厂对象来解耦。更符合程序设计开闭原则。
简单工厂
抽象工厂
通用工厂
三.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框架的更多相关文章
- 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 ...
- 01 Spring框架 基本介绍
相信学习java,并且走Web道路的道友都应该知道Spring的大名,它的地位相信也不需要我在这里多说什么,接下来的文章就Spring的配置和使用来进行一些讲解. 首先学习框架我们都要考虑和做到以下几 ...
- spring框架总结(01)
1.spring是什么? sprint其实就是一个开源框架,是于2003年兴起的一个轻量级的java开发框架,是有Road Johnson创建的,简单的来说spring是一个分层的JavaSE/EE( ...
- Spring 框架基础(01):核心组件总结,基础环境搭建
本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...
- 最新 Eclipse IDE下的Spring框架配置及简单实例
前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...
- 回顾Spring框架
Spring框架: 传统JavaEE解决企业级应用问题时的"重量级"架构体系,使它的开发效率,开发难度和实际的性能都令人失望.Spring是以一个 救世主的身份降临在广大的程序员面 ...
- Spring框架简单介绍
原文地址: http://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多 ...
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- Spring学习之旅(二)极速创建Spring框架java Web工程项目
编译工具:eclipse 1)创建Web工程:spring_web_helloworld 2)导入所需jar包: 3)创建实体类:同上篇博文 4)创建配置文件hellobean.xml.同上篇博文 不 ...
- Spring框架+Struts2框架第一次整合
1:Spring框架和Struts2框架如何整合??? Spring 负责对象创建 Struts2 用Action处理请求 2:Spring与Struts2框架整合的关键点: 让struts2框架ac ...
随机推荐
- MongoDB覆盖索引查询
官方的MongoDB的文档中说明,覆盖查询是以下的查询: 1. 所有的查询字段是索引的一部分 2. 所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, MongoDB 无需在 ...
- MongoDB监控
1. mongostat:间隔固定时间获取mongodb的当前运行状态,并输出. 使用示例: D:\Program_Files\MongoDB\bin\mongostat(根据MongoDB的安装目录 ...
- PHP的取整函数
PHP的取整函数有四个,分别是ceil.floor.round和intval,下面对它们进行一一介绍: 1. ceil(x):向上舍入为最接近的整数. 返回不小于 x 的下一个整数,x 如果有小数部分 ...
- print、println与printf之间的区别
//print没有换行的而println有自动换行功能.实例:uprint.java class uprint{public static void main(String arg[]){int i, ...
- 通过对DAO层的封装减少数据库操作的代码量
在学框架之前,写项目时总是要花大量的时间去写数据库操作层代码,这样会大大降低我们的效率,为了解决这个问题,我花了两天时间利用反射机制和泛型将DAO层进行了封装,这样我们只需要写sql语句,不需要再写 ...
- HDU 6143 Killer Names
Killer Names Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- Python面向对象篇之元类,附Django Model核心原理
关于元类,我写过一篇,如果你只是了解元类,看下面这一篇就足够了. Python面向对象之类的方法和属性 本篇是深度解剖,如果你觉得元类用不到,呵呵,那是因为你不了解Django. 在Python中有一 ...
- (11.06)Java小知识
最近由于课程变化,学习计划也跟着改动,留给我写博客的时间也越来越少.今天晚上没有课,抽空过来图书馆写一写,许久不写感觉都有点陌生了! 今天要和大季家分享的衔接了上一篇博客,是关于方法的嵌套调用与递归调 ...
- JavaNIO阻塞IO添加服务器反馈
package com.java.NIO; import java.io.IOException; import java.net.InetSocketAddress; import java.nio ...
- css相关 细节 优化 备忘
<p>标签不能再包含<p>,也不能包含<div>,<div>可以包含<p> a 和 img 标签是特殊的行内元素,a标签可以包含div等,几 ...