Spring 核心概念以及入门教程
初始Spring
在学习Spring之前我们首先要了解一下企业级应用。企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用。
这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集,数据规模大,用户数量多,有较强的安全性考虑和较高的性能要求。
当代的企业级应用绝不可能是一个个独立系统。在企业中,一般都会部署多个进行交互的应用,同时这些应用又都有可能与其他企
业的相关应用连接。从而构成一个结构复杂的,跨越Internet的分布式企业应用集群。
此外,作为企业级应用,不但要有强大的功能,还要能够满足未来业务需求的变化,易于扩展和维护。Spring的作者是Rod Johnson
2002年他编写了<<Expert One-on-One Java EE设计与开发>>一书。在书中,他对传统的Java EE 技术日益臃肿和低效提出了质疑于是
提出Interface 21,也就是Spring框架的雏形 。他提出技术要以实用为准的主张。在2003年2月Spring框架正式成为一个开源的项目并发布
于SourceForge中。
Spring致力于Java EE 应用的各种解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,Spring
贯穿表现层,业务层,持久层,然而Spring 并不想取代那些现有的框架,而是以高度的开放性与它们无缝整合。
Spring的“绿草丛”
Spring确实给人一种格外清新,爽朗的感觉,仿佛微雨后绿草丛,讨人喜欢。Spring是一个轻量级框架,它
大大简化了Java企业级开发,提供了强大,稳定的功能,又没有带来额外的负担,让人们在使用它做每一件事情的
时候都有得体和优雅的感觉。Spring有两个主要目标:一是让现有技术更易于使用,二是促进良好的编程习惯。
Spring是一个全面的解决方案,但它坚持一个原则:不重新发明轮子。已经有较好解决方案的领域Spring
绝不做重复性的实现。例如对象持久化和ORM,Spring只是对现有的JDBC,Hibernate等技术提供支持,使之更易用
而不是重新做一个实现。
Spring框架由大约20个功能模块组成。这些模块被分组成6个部分,分别是Core Container,DataAccess/Integration
Web,AOP(Aspect Oriented Programming),Instrumentation及Test。
Spring Core是框架最基础部分,提供了IoC特性。Spring Context为企业级开发提供了便利和集成的工具。Spring AOP是
基于Spring Core 的符合规范的面向切面编程的实现。Spring JDBC 提供了JDBC的抽象层,简化了JDBC编码,同时是代码更
健壮。Spring ORM部分对Hibernate等ORM框架提供了支持。Spring Web 为Spring 在Web应用程序中的使用提供了支持。
Spring IoC
理解“控制反转”
控制反转(Inversion of Control, IoC)也被称为依赖注入(Dependency Injection,DI),是面向对象编程中的一种设计理
念,用来减低程序代码之间的耦合度。“依赖”在代码中一般指通过局部变量,方法参数,返回值等建立的对于其他对象的调用关系
。例如,在A类的方法中,实例化了B类的对象并调用其方法以完成特定的功能我们就可说A类依赖于B类。
***************************************************************************************************************************
说了这么多的理论知识下面我们就来实现Spring的第一个入门案例 Hello ,Spring!
使用的开发工具为MyEclipse。我们需要引入的jar包有如下:
commons-logging-1.1.1.jar
log4j-1.2.17.jar(为了方便观察Bean实例化过程,我们采用log4j作为日志输出)
org.springframework.asm-3.1.1.RELEASE.jar
org.springframework.bean-3.1.1.RELEASE.jar
org.springframework.context-3.1.1.RELEASE.jar
org.springframework.core-3.1.1.RELEASE.jar
org.springframework.expression-3.1.1.RELEASE.jar
接下来我们编写HelloSpring类(代码如下:)
public class HelloSpring{ //定义who属性,该属性的值通过Spring框架进行设置
private String who=null;
/**
*定义一个打印的方法
*/ public void print(){
System.out.println("Hello,"+this.getwho()+"!");
}
//获得Who
public String getWho(){ return who; }
//设置Who
public void setWho(String who){ this.who=who;
}
}
然后我们编写Spring配置文件。在src目录下创建applicationContextxml文件,创建HelloSpring类的实例为Who注入属性值。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/scheam/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-3.1.xsd">
<bean id="helloSpring" class="cn.biz.HelloSpring">
<!--property 元素用来为实例属性赋值,此处实际调用setwho()方法--> <property name="who ">
<!--将字符串“Spring”赋值给who属性-->
<value>Spring</value>
</property>
</bean>
</beans>
下面我们在HelloSpring类中添加main()方法测试即可
public class HelloSpring{
//省略上面出现过的代码
public static void main (String [] args){ //通过ClassPathXmlApplicationContext实例化Spring的上下文 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过getBean()方法,根据ID来获取Bean实例
HelloSpring helloSpring =(HelloSpring) context.getBean("helloSpring");
//执行print()方法
helloSpring.print();
} }
这样入门案例就完成了,运行在控制台看到helloSpring!即可。
如果你掌握了Spring入门案例 并且觉得对你有帮助 那么请期待我接下来关于Spring后续的内容吧
Spring 核心概念以及入门教程的更多相关文章
- SSM 五:Spring核心概念
第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处 ...
- Spring Boot:快速入门教程
什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- Spring 核心概念
Spring 核心概念 引言 本文主要介绍 Spring 源码中使用到的一些核心类 1. BeanDefinition BeanDefinition表示Bean定义,BeanDefinition 中存 ...
- lucene 核心概念及入门
lucene Lucene介绍及核心概念 什么是Lucene Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供.Lucene提供了一个简单却强大的应用程序接口 ...
- Spring系列(一):Spring核心概念
一.Spring概念 Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型. 二.Sprin ...
- Spring核心概念和案例
一.Spring概念 1.Spring框架概述 轻量级的Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建, Spring框架提供了一个开发平台,用于整合其他技 ...
- 第一章 spring核心概念
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- Spring核心概念之AOP
一.AOP 的概念 AOP(Aspect Oriented Programming)的缩写,面向切面编程,主要作用就是对代码进行增强处理. 理解面向切面编程的含义:就是在不改变原有程序的基础上为代码增 ...
- Spring核心概念
Spring是一个轻量级的企业级框架,提供了loc容器,aop实现,DAO/OR支持,Web集成等功能,目标是使现有的JAVA EE技术更易用,并促进良好的编程习惯. 依赖注入让组件之间以配置文件的形 ...
随机推荐
- Viking Village维京村落demo中的粒子距离消隐
Custom/DistanceFade shader 粒子雾似乎可以使用.尝试给面片套用该效果,但由于有顶点变形,效果不太好,要做些改动
- Uva 10917
题目链接:http://vjudge.net/contest/143062#problem/A 题意:一个人要从点1去到点2,中间还有很多点和很多条边.问你如果他每次走的边(a,b)都满足:a点到目标 ...
- python学习笔记七 初识socket(进阶篇)
socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- 【Spring】利用Spring最简单地使用异步方法
有时候我们想异步地调用某个方法. 比如这个场景:在业务处理完毕后,需给用户发送通知邮件.由于邮件发送需调用邮箱服务商,有可能发生阻塞,我们就可以异步调用.当然有个前提,即如果邮件发送失败,不需要提示用 ...
- PHP-----二维数组和二分查找
二维数组由行和列组成.由arr[$i][$j]表示,先后表示行和列,类似于坐标点. 打印二维数组-----通过两次遍历,第一次遍历每一行,第二次遍历每一行的具体元素,并且通过使用count($arr[ ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...
- postMessage
postMessage 父页面 e.target.contentWindow.postMessage(messageData, '*'); /*******onMessage处理******/ fun ...
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...
- react native get started run 模拟机报错解决
参照 http://reactnative.cn/docs/0.30/getting-started.html#content 1)当执行 react-native run-android 这个环节的 ...
- Linux 系统启动过程
linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行init. 系统初始化. 建立终端 . 用户登录系统. 内核引 ...