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. LeetCode Binary Tree Paths(简单题)

    题意: 给出一个二叉树,输出根到所有叶子节点的路径. 思路: 直接DFS一次,只需要判断是否到达了叶子,是就收集答案. /** * Definition for a binary tree node. ...

  2. [virsh] error: unknown OS type hvm解决办法

    今天在linux服务器上编译安装升级了下qemu,升级命令如下: root@ubuntu:/opt/qemu-# ./configure --prefix=/usr/local/ --target-l ...

  3. hadoop问题锦集(一)-搭建集群环境时的常见问题

    1.没有主机的路由 1.namenode与datanode之间ping不通了 2.防火墙得关闭: ufw status ufw disabled 2. ssh localhost ssh:connec ...

  4. js基础知识(pomelo阅读)

    0,node.js调试: http://www.noanylove.com/2011/12/node-the-inspector-debugging-node-js/   1,读取配置文件: var ...

  5. 使用github + Octopress 搭建免费博客 + 碰到问题的解决方法

    使用github + Octopress 搭建免费博客,先说碰到的问题,具体创建方法见下面. 问题1, 添加ruby淘宝链接问题,显示无法获取, 解决: source “http://ruby.tao ...

  6. 修改数据库mysql字符编码为UTF8

    Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程. 步骤1:查看当前的字符编码方法 mysql> show variables like'char ...

  7. relative与absolute的结合使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Sobel边缘检测算法(转载)

    转载请注明出处:  http://blog.csdn.net/tianhai110 索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰 ...

  9. ZOJ 1029 Moving Tables

    原题链接 题目大意:走廊两边排列了400个房间,要在两个房间之间搬桌子.搬桌子的时候会占用一部分走廊,有冲突的话要回避.求最快搬完的时间. 解法:开辟一个数组,每占用一段走廊,就把相应的房间号的元素加 ...

  10. input type=file

    (1)首先来说一下,如何让 <input type='file' >成为你想要的模样. 最简单的方法就是在让<input type='file' >的透明度为0(完全透明),然 ...