《Spring敲门砖之基础教程第一季》 第二章(1) Spring框架之IOC首例-HelloWorld

时间:2022-04-25
本文章向大家介绍《Spring敲门砖之基础教程第一季》 第二章(1) Spring框架之IOC首例-HelloWorld,主要内容包括构建项目、总结、声明:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

回顾

上一章我们主要学习了Spring的一些理论知识,对Spring框架有了一个总体的概括,大家应该在头脑里形成一个初步的印象,接下来我们就会针对Spring框架进行一些列的实践讲解,通过例子来展示Sping的魅力。

今天,我们主要讲解一个简单的示例,也是学习每一门语言或者一个工具,大家最通俗易懂,就是“HelloWorld”,我们通过Spring管理Bean,来输出一个“HelloWorld”。

构建项目

上一章节,我们已经将Spring所有的依赖的jar包下载到制定位置。今天我们来构建一个java项目,并且引入Spring的相关jar,然后使用Spring的IOC来管理Bean。

第一步,首先打开Eclipse开发工具,选择一个新的工作空间目录。新建Java Project

第二步,我们导入Spring相关jar,还有sl4j的日志相关jar

右键选中项目选择Build Path -> Configure Build Path,点击选择Libraries, 选中Add External JARs

我们选中Spring下载的所有jar ,还有日志相关的jar。

第三步,我们新建一个java源文件,HelloWord.java和Bootstrap.java,将它们放在包 com.travelwithfram.study下。

其中,HelloWord.java 内容如下:

package com.travelwithfram.study;public class HelloWorld {	
	private String message;	public void getMessage() {
		System.out.println("Your Message : " + message);
	}	public void setMessage(String message) {		this.message = message;
	}
}

Bootstrap.java内容如下:

package com.travelwithfram.study;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class BootStrap {	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
		HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
		obj.getMessage();
	}
}

第四步,我们创建Beans.xml配置文件,新建一个xml文件,然后在Spring项目的demo里,copy一个项目的xml标签内容。

<?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.travelwithfram.study.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean></beans>

这里的root是<beans>标签,然后在里面可以配置多个<bean>标签,每一个都标示一个被容器管理的bean,这里我们配置了id为"helloWorld",具体指向的类为com.travelwithfram.study.HelloWorld,并且注入了属性property,它的值为"Hello World!",那么Spring在创建这个类的时候,会帮我们自动初始化属性的值。然后我们就可以使用这个属性的值。

第五步,前面所有的配置工作都做好了,我们就可以来检验一下我们的成果了,接下来启动Bootstrap,我们遇到一个小问题,程序启动报了异常,看一下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:164)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:228)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:89)
	at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:58)
	at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at com.travelwithfram.study.BootStrap.main(BootStrap.java:8)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	... 8 more

很明显,是因为少了jar包,我们按照异常去排查,发现org.springframework.context.support.AbstractApplicationContext ,下面代码可以看出

/** Logger used by this class. Available to subclasses. */
	protected final Log logger = LogFactory.getLog(getClass());

这个里面日志使用的是org.apache.commons.logging.LogFactory的api,所以我们还需要下载.commons.logging的相关jar。下载地址如下

http://commons.apache.org/proper/commons-logging/download_logging.cgi

下载后,添加到项目环境里即可。重新启动Bootstrap,可以看到如下输出:

恭喜吧,证明我们配置的Sping管理bean容器已经可以成功运行。

总结

这节课,我们主要讲述了一个最基本的使用Sping容器的IOC功能,通过配置了一个Sping管理的javabean,我们在使用的过程中,不需要手动去new一个对象,只需要去容器里查找,可以通过id查找,也可以通过类名去查找。最后我们找打了需要的类,直接使用就可以了,也无需关心这个类的整个生命周期,完全交由Sping控制,大家是不是觉得很有意思,后面我们会介绍Spring更多精彩的功能。

声明:

本文介绍纯属个人观点,如果不对的地方欢迎批评指正,让我们共同进步,朝着正确的方向前进。如果您喜欢本文请关注下面公众账号获取最新文章,您的支持是我前行的动力。