Spring入门学习(一)
SpringMVC基础平台补充(2016.03.03)
如果想要开发SpringMVC,那么前期依次安装好:JDK(jdk-8u74-windows-x64,安装后配置环境变量JAVA_HOME和CLASS_PATH,然后在PATH中添加bin目录)、Eclipse(eclipse-jee-mars-2-win32-x86_64,解压免安装)和Apache(apache-tomcat-7.0.68-windows-x64,解压后给环境变量配置一下CATALINA_HOME,然后执行service.bat进行注册即可)。
-----------------------------------------------------------------------------------------------------
今天开始正式学习Spring框架,首先讲安装,spring 的版本发布中,有的版本有同步发布依赖包的下载,有的却没有。3.0.2的版本有, 而3.2.3 的版本却没有(可能是因为依赖库没有改变的缘故)。
1、下载Spring
这里只是为了学习,下载3.0.2版本的:http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-framework-3.0.2.RELEASE-dependencies.zip
2、配置Spring
Sping安装包解压后可以发现,全部内容都集中在dist子目录里面包含的jar文件。在Spring工程中使用这些jar文件就行了,不存在安装的问题。将Spring文件夹放到一个固定的位置存放起来,等Eclipse工程创建时动态指定一下即可,或者直接把Spring的jar文件全部拷贝到工程目录中去:
# unzip spring-framework-3.0..RC3-with-docs.zip
# cp spring-framework-3.0..RC3 /home/xiaoku/ -arf
3、下载工具类库
这里下载两个辅助类库,分别是commons-logging-1.2-bin.tar.gz和antlr-runtime-4.4.jar
简单介绍一下这两个库的作用:
(1)commons-logging.jar:Spring 的必备包,用来记录程序运行时的活动的日志记录。类似与java平台中的log4j和JDK Logging API等,但如果你希望你的日志记录与实现无关,你可以使用Apache Commons Logging,它使用抽象的API,这些API都是实现无关的,可以让你在不同的日志记录实现之间切换,而不需要修改你的代码,它会在发布时根据环境来选择不同的具体底层实现。可以参考一下官网的描述。
(2)antlr-runtime-4.4.jar:ANTLR(ANother Tool for Language Recognition)是一个可以接受含有语法描述的语言描述符并且生成程序能够识别这些语言所产生的句子。主要类有两种:Lexer(文法分析器类)和Parser(解析器类)。可以参考IBM网站给出的说明或者官网的文档说明。
这两个类库既可以添加到CLASSPATH环境变量中,也可以直接由Eclipse进行位置指定。
4、配置Spring入门工程实例
创建一个Java工程,在创建完工程后,右键点击工程名称,选择Build Path -> Configure Build Path -> Libraries 标签页,点击Add External JARs,加载相应的库文件,加载完成后如下图所示:

更好的(2016.03.03)方式我觉得可以是在Eclipse中配置“User Libraries”,这样的话某一类库都会在一个目录下,方便管理(工程中要用的话再在上述页面中选择“Add Library”-->“User Library”就能找到了!),在Window-->Preferences-->Java-->Build Path下可以找到,参见下图所示:

注意:上面的这个描述是有问题的,如果以“User Library”的形式导入,虽然可以让工程目录显得很规整,但是会存在一个问题就是工程报错“Class ** Not found!”。原因是:
“WebappClassLoader加载器专门负责加载webapps下面各个web项目的WEB-INF下的类库。而我们通过user library引入的jar包自然不会被WebappClassLoader加载器加载,所以必然会报ClassNotFoundException。”
5、创建两个类和一个Spring配置文件
这里是一个简单的例子,分别创建两个类:HelloWorld和MainApp,内容如下:
package com.xiaoku;
public class HelloWorld {
private String message;
public void getMessage() {
System.out.println("输出信息:" + message);
}
public void setMessage(String message) {
this.message = message;
}
}
package com.xiaoku; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld obj = (HelloWorld) context.getBean("helloWorld"); obj.getMessage();
}
}
配置文件放在src目录下,起名为Beans.xml,在MainApp中指定了。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd"> <bean id="helloWorld" class="com.xiaoku.HelloWorld">
<property name="message" value="Hello World!"/>
</bean> </beans>
注意确保这个Beans.xml文件在CLASSPATH环境变量中可用。这里的CLASSPATH包含了当前路径,所以是符合要求的。Beans.xml文件中定义的bean控制具体的对象,并且可以指定对象的值而无需修改java源文件。
6、执行Spring实例
要做到这一点,保持 MainApp.Java 文件选项卡激活并使用在Eclipse IDE中提供 Run 选项,或使用Ctrl + F11可以编译并运行应用程序MainApp。如果一切顺利那么应用程序这将打印以下信息在 Eclipse IDE 控制台:
十二月 27, 2014 11:48:38 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6e2c634b: startup date [Sat Dec 27 23:48:37 CST 2014]; root of context hierarchy
十二月 27, 2014 11:48:38 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [Beans.xml]
十二月 27, 2014 11:48:38 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3f102e87: defining beans [helloWorld]; root of factory hierarchy
输出信息:Hello World!
小结:
- 本篇文章算是Spring入门教程了,从安装到工程执行,完成了全套过程;
- 在MainApp.java中通过ClassPathXmlApplicationContext来获取xml配置文件的内容,并得到相应的Bean创建对象,就能够操作该对象了;
- 通过修改Beans.xml可以控制程序的具体内容,无需修改Java源文件,可以看到Spring 框架的灵活特性。
Spring入门学习(一)的更多相关文章
- [Spring入门学习笔记][静态资源]
遗留问题 在上一节课的作业中,我们一定遇到了一点问题——虽然将页面内容正确的返回给了浏览器,但是浏览器显示的样式却是不正确的,这是因为在HTML的\标签中我们这样引入了CSS资源: <link ...
- [Spring入门学习笔记][创建网站URL]
设计网站的URL 现代的Web站点都会设计一套拥有明确意义,方便用户记忆的URL,不论是域名还是路径,以天码营为例: http://tianmaying.com/courses表示网站下所有的课程列表 ...
- [spring入门学习笔记][spring的IoC原理]
什么叫IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...
- Spring入门学习推荐
该作者的 spring 博客很好,作为学习用 简介 https://blog.csdn.net/column/details/15088.html?&page=1 https://blog.c ...
- [Spring入门学习笔记][Spring的AOP原理]
AOP是什么? 面向切面编程 软件工程有一个基本原则叫做“关注点分离”(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年头互联网也 ...
- [Spring入门学习笔记][Spring Boot]
什么是Spring Boot Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架 ...
- Spring入门学习(二)三种实例化bean的方法
前面的哪一种就是通过构造函数来实例化对象 下面我们可能用到工厂方法来视力话对象,这样我们的配置文件又该怎么配置呢 <bean name="service2" class=&q ...
- Spring入门学习(一)
Spring的主要功能是控制反转和面向切面编程,下面我们就来编写第一个spring的程序来体验一下控制反转 首先是加载配置文件 <?xml version="1.0" enc ...
- Spring入门学习笔记(4)——JDBC的使用
目录 Spring JDBC框架概览 JdbcTemplate类 配置数据源 数据访问对象(Data Access Object,DAO) 执行SQL命令 Spring JDBC框架概览 使用传统的J ...
随机推荐
- 常用的Hash算法
1.RSHash unsigned int RSHash(const std::string& str) { unsigned int b = 378551; unsigne ...
- ubuntu 下建立桌面快捷方式
1)新建文件eclipse.desktop,命令如下: sudo vim /usr/share/applications/eclipse.desktop 2)在新建文件中添加如下内容并保存: [Des ...
- 在Python中,令values=[0,1,2];values[1]=values,为何结果是[0,[...],2]?
转载自:http://www.zhihu.com/question/21000872/answer/16856382>>> values = [0, 1, 2] >>&g ...
- 7-zip的压缩的时候排除某目录
安装暂且不说了. 看一下帮助. [root@localhost Server]# 7z -Zip [] - Igor Pavlov -- p7zip Version ,Utf16=on,HugeFil ...
- AngularJS的路由、模块、依赖注入
AngularJS的路由在实际应用中更多是由另外封装好的angular-ui-router.js实现的! 为什么不用Ajax而要用前端路由?
- 菜鳥日記:為 Github 添加 ssh
這只是一篇求真務實言簡意賅的菜鳥日記 記錄了碼盲在OSX 中為Github添加 ssh 的過程 要從 Github 上克隆個源碼到本地,發現無 ssh 密鈅 於是開到官網幫助照貓畫虎如下: 1.打開 ...
- php部分(查看文件、建立站点、语法变量、变量的几个方法、“全局局部变量的调用”、static、函数参数的作用域);
浏览器查看php文件: 建立站点,浏览php文件: php的语法 <?php echo "Hello World!"; ?> 注释语法: <?php // 这是 ...
- leetcode 109 Convert Sorted List to Binary Search Tree ----- java
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- LOAD TABLE tbl_name FROM MASTER语法 SQL
用于把表的拷贝从主服务器转移到从属服务器.本语句的主要作用是调试LOAD DATA FROM MASTER.它要求用于连接主服务器的帐户拥有对主服务器的RELOAD和SUPER权限,并拥有对要载入的主 ...
- shell脚本处理大数据系列之(一)方法小结
转自:http://longriver.me/?p=57 方法1: 单进程处理大规模的文件速度如(上million量级)比较慢,可以采用awk取模的方法,将文件分而治之,这样可以利用充分的利用多核CP ...