前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Spring敲门砖之基础教程第一季》 第二章(1) Spring框架之IOC首例-HelloWorld

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

作者头像
用户1257215
发布2018-01-30 11:09:36
5470
发布2018-01-30 11:09:36
举报
文章被收录于专栏:架构师之旅

回顾

上一章我们主要学习了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 内容如下:

代码语言:javascript
复制
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内容如下:

代码语言:javascript
复制
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标签内容。

代码语言:javascript
复制
<?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,我们遇到一个小问题,程序启动报了异常,看一下错误:

代码语言:javascript
复制
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 ,下面代码可以看出

代码语言:javascript
复制
/** 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更多精彩的功能。

声明:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 构建项目
  • 总结
  • 声明:
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档