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.gzantlr-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!

小结:

  1. 本篇文章算是Spring入门教程了,从安装到工程执行,完成了全套过程;
  2. 在MainApp.java中通过ClassPathXmlApplicationContext来获取xml配置文件的内容,并得到相应的Bean创建对象,就能够操作该对象了;
  3. 通过修改Beans.xml可以控制程序的具体内容,无需修改Java源文件,可以看到Spring 框架的灵活特性。

Spring入门学习(一)的更多相关文章

  1. [Spring入门学习笔记][静态资源]

    遗留问题 在上一节课的作业中,我们一定遇到了一点问题——虽然将页面内容正确的返回给了浏览器,但是浏览器显示的样式却是不正确的,这是因为在HTML的\标签中我们这样引入了CSS资源: <link ...

  2. [Spring入门学习笔记][创建网站URL]

    设计网站的URL 现代的Web站点都会设计一套拥有明确意义,方便用户记忆的URL,不论是域名还是路径,以天码营为例: http://tianmaying.com/courses表示网站下所有的课程列表 ...

  3. [spring入门学习笔记][spring的IoC原理]

    什么叫IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...

  4. Spring入门学习推荐

    该作者的 spring 博客很好,作为学习用 简介 https://blog.csdn.net/column/details/15088.html?&page=1 https://blog.c ...

  5. [Spring入门学习笔记][Spring的AOP原理]

    AOP是什么? 面向切面编程 软件工程有一个基本原则叫做“关注点分离”(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年头互联网也 ...

  6. [Spring入门学习笔记][Spring Boot]

    什么是Spring Boot Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架 ...

  7. Spring入门学习(二)三种实例化bean的方法

    前面的哪一种就是通过构造函数来实例化对象 下面我们可能用到工厂方法来视力话对象,这样我们的配置文件又该怎么配置呢 <bean name="service2" class=&q ...

  8. Spring入门学习(一)

    Spring的主要功能是控制反转和面向切面编程,下面我们就来编写第一个spring的程序来体验一下控制反转 首先是加载配置文件 <?xml version="1.0" enc ...

  9. Spring入门学习笔记(4)——JDBC的使用

    目录 Spring JDBC框架概览 JdbcTemplate类 配置数据源 数据访问对象(Data Access Object,DAO) 执行SQL命令 Spring JDBC框架概览 使用传统的J ...

随机推荐

  1. Qt简介

    一.Qt与Qt Creator简介        Qt是一个跨平台应用程序和 UI 开发框架.使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序. ...

  2. SecureCRT最佳配色方法+直接修改默认配置方法 - imsoft.cnblogs

    SecureCRT默认显示效果是黑白且刺眼的主题,看起来很不舒服.经过一番搜索,总结结果如下,直接设置默认属性,设置一次,不需再改. 效果图: 具体操作方法: Options->Global O ...

  3. 将String类型的XML解析并设置到实体类中

    package com.mooc.string; import java.util.ArrayList; import java.util.List; import org.dom4j.Documen ...

  4. ubuntu 双屏问题的解决方案

    ubuntu有一个很让人头疼的问题就是它默认开启双屏.只要你有两个显示器接口,即使你没有两块屏幕,它也是按照双屏幕去显示. 这就会造成一些很让人无语的问题,比如,恰好跳到你没有的那个屏幕就可能导致无法 ...

  5. 家族_NOI导刊2010普及(10)

    题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏.现在给你岛上的 ...

  6. 《Java程序设计》第8周学习总结

    学号20145220 <Java程序设计>第8周学习总结 教材学习内容总结 15.1.1日志API简介 java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件 ...

  7. POJ 1195 Mobile phones(二维树状数组)

                                                                  Mobile phones Time Limit: 5000MS   Mem ...

  8. P235 实战练习(集合类2)、摇奖程序和验证码(修改版)

    1.分别向Set集合以及List集合中添加“A”.“a”.“c”.“C”.“a”5个元素,观察重复值“a”能否在List集合以及Set集合中成功添加. package org.hanqi.practi ...

  9. POJ-2481 Cows (线段树单点更新)

    题目大意:给n个区间,对于任意一个区间,求出能完全包含它并且长度比它长的区间的个数. 题目分析:将一个区间视为二位坐标系中的一个点,左端点视作横坐标,右端点视作纵坐标.则题目变成了求每个点的左上方.正 ...

  10. POJ-2378 Tree Cutting

    题目大意:一棵n个节点的树,找出所有的点满足:删除它之后,产生的最大(这里节点数最多即为最大)新树中节点数不超n的一半. 题目分析:两次深搜,过程类似求重心. 代码如下: # include<i ...