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 ...
随机推荐
- dos快速通道
要在文件夹的右键菜单中添加“命令提示符”选项.在注册表HKEY_CLASSES_ROOT\Directory\shell分支下新建一项“CommandPrompt”,修改右侧窗格中的“默认”键值为“命 ...
- 【转】eclipse 安装插件
eclipse安装插件或许没有什么多的可讲,但对于刚刚接触eclipse这款IDE的新手来说,可能还是会有点棘手! eclipse安装插件大致三种方法: 方法一:自身安装器 使用eclipse的Sof ...
- jellyfish K-mer analysis and genome size estimate
http://www.cbcb.umd.edu/software/jellyfish/ http://www.genome.umd.edu/jellyfish.html https://githu ...
- div排序 根据《input》
jquery代码如下$(function(){//alert($("input").length); var arr=Array(); $("input").e ...
- this指针基础介绍
=================this指针的由来==================== 一个学生可以有多本书一样,而这些书都是属于这个同学的:同理,如果有很多个同学在一起,那么为了确定他们的书不 ...
- input子系统详解
一.初识linux输入子系统 linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler).输入子系统核心层(Inpu ...
- scala言语基础学习二
使用yield和函数式编程转化数组 算法案例(移除第一个负数之后的所有负数) 改良高校方案
- 网站后台的lnmp启动与重启
网站建立时间很长了,经常挂掉,又没有其他技术人员带.只好自己摸索着修复. 到今天网站已经挂掉了一个礼拜.请求各路大神无果后决定自己修复. 首先出现的是502,网关错误. 1.上阿里云服务用户中心重新启 ...
- 【JZOI2002】【BZOJ1477】【P1371】青蛙的约会
看lzx的模板才写出来的,我之前的思路好想错了 chad_orz 原题: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝着对方 ...
- 黑马程序员——JAVA基础之内部类,匿名内部类
------- android培训.java培训.期待与您交流! ---------- 内部类 将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类). 内部类访问特点: • 内部 ...