一.什么是Spring?

1.Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架

2.spring是一个高度灵活的轻量级框架,其目的是降低企业级应用开发的复杂度。

3.以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程为内核)

4.Spring是免费开源的,下载地址:http://www.springsource.org/

5.Spring的出现是为了取代EJB的臃肿、低效、脱离现实

二.应用spring的好处?

1.方便解耦,简化开发

Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

2.AOP编程的支持

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

3.声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程

4.方便程序的测试

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

5.方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis等)的直接支持

6.降低JavaEE API的使用难度

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

三.Spring功能模块的划分

Spring 框架是一个分层架构,,它包含一系列的功能要素并被分为大约20个模块。这些模块分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation和测试部分,如下图所示:

Core Container模块:

Core和Beans模块:框架的基础部分,提供IOC(反转控制)和依赖注入(DI)特性。

Context模块:构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块同时也支持J2EE的一些特性,例如EJB、JMX和基础的远程处理。ApplicationContext接口是Context模块的关键。

Expression Language模块:Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。

AOP&&Instrumentation模块:

AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。

DataAccess模块:

JDBC模块:该模块提供了一个JDBC抽象层,简化了访问数据库的方式

ORM模块:该模块为流行的对象-关系映射框架——JPA、JDO、Hibernate、iBatis等提供了一个交互层。

Transaction模块:该模块支持编程和声明性的事物管理。

Web模块:

Web模块:该模块提供了基础的面向web的集成特性。例如多文件上传、使用servlet listeners初始化IoC容器以及一个面向web的应用上下文。它还包含Spring远程支持中web相关部分。

Web-Servlet模块:该模块包含Spring的model-view-controller(MVC)实现。

Web-Struts模块:该模块提供了对Struts的支持。

Web-Porlet模块:提供了用于portlet环境和Web-Servlet模块的MVC的实现。

test模块:

Test模块支持使用JUnit和TestNG对Spring组件进行测试

四.Spring核心容器概述

容器: 用来包装或装载物品的贮存器。

web服务器与jsp、servlet之间的关系:

1) 从程序文件存放的位置。

2 )  从程序执行的方式。

从以上两方面看web服务器实际是动态网页程序文件的容器。

五.Spring核心容器IOC

IOC (Inversion of Control) :控制反转,通过容器来控制对象的创建及维护,对象中成员变量的创建及维护。反转就是将对象的控制权转移给容器处理,目的是获得更好的扩展性和可维护性。

Spring核心容器:核心容器是spring框架的核心,用户编写的程序文件发布到服务器后,由spring负责管理,包含对象的初始化、函数的调用、对象的消亡等等,因此可以将spring看作是服务器与应用程序的中间管理组件。

六.Spring IOC控制反转入门案例

Spring的核心容器可以管理任何java类,容器可以初始化该类,并返回该类的实例。入门程序简单演示容器的使用方法,程序包含如下4步:

下载Spring最新开发包

复制Spring开发 jar包到工程

理解IoC控制反转和DI依赖注入

编写Spring核心配置文件

在程序中读取Spring配置文件,通过Spring框架获得Bean,完成相应操作

1.官方下载Spring 最新开发版本

http://www.springsource.org/download/community

2.导入Spring核心开发包到创建工程

spring-beans-4.2.4.RELEASE.jar

spring-context-4.2.4.RELEASE.jar

spring-core-4.2.4.RELEASE.jar

spring-expression-4.2.4.RELEASE.jar

还需要下载commons-logging日志包

commons-logging-1.1.1.jar       集成log4j 导入log4j jar包

解析:

HelloTest类中使用 HelloService类对象

传统方式: HelloService helloService = new HelloService();

IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建HelloService对象的控制权,交由Spring框架管理,简单说,就是创建HelloService对象控制权被反转到了Spring框架

七.开发步骤:

1.在src下创建一个applicationContext.xml

引入XML的约束:

spring-framework-3.2.0.RELEASE\docs\spring-framework-reference\html目录下

* 找到xsd-config.html.引入beans约束:

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--
name属性:对象名称 名称可以重复,也可出特殊字符
id属性:对象名称 (旧) 名称是不可以重复,而且不能有特殊字符
class属性: 对象类全路径
scope属性 :singleton 单例(默认)
prototype 多列
request reqeust作用域使用(不用)
session session作用域使用(不用)
-->
<bean name="user" class="com.bean.User" scope="prototype"></bean> </beans>

2.创建测试类

public class MyTest {

    @Test
public void test(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User)applicationContext.getBean("user"); System.out.println(user);
}
}

ApplicationContext和BeanFactory

Spring提供了多种初始化容器的方式,其中最常见的是如下两种:

BeanFactory:早期的javabean工厂类实现。

ApplicationContext:对BeanFactory扩展,提供了更多功能。例如事件传递、Bean自动装配等。

ApplicationContext类继承了BeanFactory.

BeanFactory 采取延迟加载,第一次getBean时才会初始化Bean

BeanFactory在使用到这个类的时候,getBean()方法的时候才会加载这个类.

ApplicationContext类加载配置文件的时候,创建所有的类.

IOC和DI区别:

IOC:控制反转:将对象的创建权,由Spring管理.

DI:依赖注入:在Spring创建对象的过程中,把对象依赖的属性注入到类中.

费e

t和Bea

01_Spring入门程序的更多相关文章

  1. mybatis入门_mybatis基本原理以及入门程序

    一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...

  2. 1.struts2原理和入门程序

    Struts2是一个MVC的Web应用框架,是在Struts1和WebWork发展起来的,以WebWork为核心,采取拦截器机制来处理用户请求. 原理图: 分析步骤: 1.用户发送一个请求 2.请求的 ...

  3. springMVC2 1入门程序

    1入门程序 .1需求 实现商品列表查询 .2需要的jar包 使用spring3.2.0(带springwebmvc模块) .1前端控制器 在web.xml中配置: <?xml version=& ...

  4. struts2入门程序

    struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  6. springmvc(一) springmvc框架原理分析和简单入门程序

    springmvc这个框架真的非常简单,感觉比struts2还更简单,好好沉淀下来学习~ --WH 一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解 ...

  7. python web入门程序

    python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...

  8. Maven01——简介、安装配置、入门程序、项目构建和依赖管理

    1 Maven的简介 1.1 什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Svn eclipse   maven量级 1.2 Maven好处 同 ...

  9. ssm整合快速入门程序(一)

    整合基础说明 spring 是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Jav ...

随机推荐

  1. Immutable 想破坏它也没办法

    上一章讲的是线程互斥的synchronized实现,这样做会影响性能,如何才能做到既不影响性能又能达到线程安全的目的呢,就是使用状态绝不会改变的类,Java中的应用就是String类. public ...

  2. 基于Mina的Http Server以及简单的Http请求客户端

    目的:    Java平台下的内部组件之间的通信.    1.WebService 由于感觉本身Java平台下的Web Service标准就不够统一,相互之间的调用就会有一些问题,更不用说与.net等 ...

  3. JS对象 substring() 方法用于提取字符串中介于两个指定下标之间的字符。

    提取字符串substring() substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(starPos,stopPos)  参 ...

  4. bzoj1568 Blue Mary

    题意:P:加入一条一次函数.Q:询问x位置的最大函数值. 标程: #include<bits/stdc++.h> using namespace std; ; int q,x,n; dou ...

  5. 廖雪峰Java16函数式编程-2Stream-6reduce

    1. 聚合方法 Stream.reduce()是一个Stream的聚合方法:把一个Stream的所有元素聚合成一个结果 例如: Stream.of(1, 2, 3, 4, 5).count(); // ...

  6. SpringCloudConfig

    方便服务配置文件统一管理,实时更新 组成 在spring cloud config组件中,分两个角色,一是config server,二是config client Config Server是一个可 ...

  7. 在select标签中添加a标签

    <!--第一个选项不能写连接--> <select id="" onchange="window.location=this.value"&g ...

  8. PAT甲级——A1138 Postorder Traversa【25】

    Suppose that all the keys in a binary tree are distinct positive integers. Given the preorder and in ...

  9. 第八篇:ZTree操作总结

    花了一个多星期,终于完成了这个完整的功能,今天周五是时候总结下加深理解了. 项目要实现的功能:将树形目录发布到发布库,若是根目录,没有发布,连同自己和下面所有的子目录们全部发布:不是根目录,判断父目录 ...

  10. python函数基础(函数的定义和调用)

    函数的定义 python定义函数使用def关键字 return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none def 函数名(参数列表): 函数体 ...