上一篇我们成功搭建好了spring开发的环境,接下来一起看看spring有什么神奇的地方吧(本人也是新手,有不太对的地方希望大神给指出便于修改呢,谢谢大家)。

  之前听说spring是在对xml文件的应用比较多,但是具体怎么用一直都是云里雾里,自己在刚开始的时候学习的时候,因为不是直接新建的web项目,没有自动生成applicationContext.xml,那会不知道这个配置文件是多么的重要,所以在写了如下一段代码之后,运行时,总是报错,还曾傻傻地以为该文件会自动生成,现在想想真可笑。不过如果用myeclipes中自动导入spring架包的功能的话,会自动生成的。现在提醒大家,对于applicationContext.xml一定要首先确认其的存在,再进行接下来的代码开发。(对于这种问题,大神们就不必细看了)

  applicationContext.xml代码我已在上一篇博客中给出,我存放在src目录下,在此我给出链接:http://www.cnblogs.com/speedwade/p/3968101.html

  接下来是我写的一个测试的小程序,看看,spring是否已经成功配好,路径我放在src目录下com.sep.basic包下,新建一个class类,命名为SpringTest。因为我已建好,所以会提示文件已存在,第一次新建时不会有该提示出现,如图

  然后其中代码为

 package com.sep.basic;

 import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest {
public static void main(String args[])
{
//创建applicationcontext
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//输出spring容器
System.out.println(ctx);
}
}

  在新建好的文件上鼠标右键点击Run As/Java Application后,在控制台会出现类似如下代码:

org.springframework.context.support.ClassPathXmlApplicationContext@b749757: startup date [Mon Sep 15 17:21:18 CST 2014]; root of context hierarchy

  下面我们来解释一下,在SpringTest.java中,我们仅仅创建了ApplicationContext的实例,而他正是Spring容器,只有获得了容器,我们才能成功访问容器中的Bean。输出的正是我们创建的ApplicationContext实例。Spring中大部分功能都是通过这个容器来实现的。所以可见它的强大。

  下面我们来新建一个简单的bean来看看Spring是怎么工作的。

  首先新建一个简单的java类文件,命名为FirstBeanTest,其路径为com.sep.basic.service包下。其代码为:

 package com.sep.basic.service;

 public class FirstBeanTest {
private String name;
//name属性的setter方法
public void setName(String name) {
this.name = name;
}
//测试类的info方法
public void Info()
{
System.out.println("FirstBean's Name is "+name);
}
}

  上面给出了一个成员变量与他的set方法。

  然后在applicationContext.xml中添加下面代码:

 <!-- 将FirstBeanTest类部署到Spring中的bean中 -->
<bean id="firstBeanTest" class="com.sep.basic.service.FirstBeanTest">
<property name="name" value="success"></property>
</bean>

  接下来再次回到SpringTest文件中增加代码如下:

 FirstBeanTest fbt = ctx.getBean("firstBeanTest",FirstBeanTest.class);

 fbt.Info();

  好,现在运行,可以看到输出语句:FirstBean's Name is success

  是不是很神奇?我们并没有手动去创建FirstBeanTest的实例,为什么还会成功的为其赋值呢?这就是Spring的职责了,我们只需要通过spring容器来就可以获得实例对象,并且可以赋值,这都是spring的功劳,spring会根据配置信息,获得对应的实例,并且为其设置对应的属性值。

  这种现象就是我们经常听说的控制反转(IOC)。

  

初学Java ssh之Spring 第二篇的更多相关文章

  1. 初学Java ssh之Spring 第一篇

    之前虽然毕业前实习的工作是使用的C# .NET语言,但是,毕业后还是果断应聘Java.虽然自己对Java的理解不如C#深入,只是对基础知识比较熟悉,但还是义无返顾了··· 虽然应聘经历比较坎坷,但最终 ...

  2. 初学Java ssh之Spring 第三篇

    在这篇中,我学习了依赖注入的两种方式:设值注入和构造注入. 在我们以前的思维中,如果调用一个类时,我们都需要将其手动实例化,当我们创建被调用的工作不需要我们完成时,这就是控制反转,当这个将被调用的实例 ...

  3. 初学Java ssh之Spring 第四篇

    今天我来学习学习Spring中Bean. 在Spring中原来还有<beans.../>标签啊,它相当于<bean.../>标签的老爸,老爸可以有很多个儿子,但是老爸只有一个哦 ...

  4. Spring第二篇和第三篇的补充【JavaConfig配置、c名称空间、装载集合、JavaConfig与XML组合】

    前言 在写完Spring第二和第三篇后,去读了Spring In Action这本书-发现有知识点要补充,知识点跨越了第二和第三篇,因此专门再开一篇博文来写- 通过java代码配置bean 由于Spr ...

  5. Spring第二篇【Core模块之快速入门、bean创建细节、创建对象】

    前言 上篇Spring博文主要引出了为啥我们需要使用Spring框架,以及大致了解了Spring是分为六大模块的-.本博文主要讲解Spring的core模块! 搭建配置环境 引入jar包 本博文主要是 ...

  6. SSH框架之Spring第二篇

    1.1 基于注解的IOC配置 既注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 1.2 环境搭建 1.2.1 第一步:拷贝必备的jar包 需要多拷贝一个sp ...

  7. 转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)

    原文地址:http://blog.csdn.net/yeohcooller/article/details/9316923 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创 ...

  8. Spring Data JPA 整合Spring 第二篇

    主要是在CustomerDao中去写一些代码,在调用Query中去用SQL 例如 public interface CustomerDao extends JpaRepository<Custo ...

  9. Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)

    江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...

随机推荐

  1. 不用修改nginx的高并发合并回源架构

    nginx的连接都是一对一的,想改成一对多,比较麻烦,所以曾经看完了Nginx代码想改成一对多,我还是没改成,后来改变了一下思路想到一个更简单的方案,而且不失并发性能,还容易控制,下面先给出下面的图: ...

  2. 网页通用的测试用例(出处:: 51Testing-- lxp1119216)

    此题的考察目的:面试者是否熟悉各种测试方法,是否有丰富的Web测试经验, 是否了解Web开发,以及设计Test case的能力 这个题目还是相当有难度的, 一般的人很难把这个题目回答好. 首先,你要了 ...

  3. C#中启动外部应用程序

    C#中我们可以通过Process类直接启动外部应用程序 代码如下: Process p = new Process();                    p.StartInfo.FileName ...

  4. JQuery+Js 获取浏览器高度和宽度

    JQuery-------做手机Web开发做浏览器兼容用到了,所以在网上找了些汇总下. alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(docum ...

  5. Centos下删除文件名乱码文件

    centos下通过rm命令来删除文件,但是如果要删除文件名乱码的文件,就不能直接使用rm命令了,因为压根就无法输出文件名来.不过借助find命令可以实现对其删除.在linux下对于每个文件都一个对应的 ...

  6. WCF入门教程[WCF基本应用]

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  7. z-index的最大值、最小值

    浏览器 最大值 超过最大值后变成 最小值 小于最小值后变成 备注 IE6 2147483647 2147483647 -2147483648 -2147483648   IE7 2147483647 ...

  8. 11g v$session定位客户端IP

    11g v$session 新增PORT 字段 用于描述客户端的端口号 客户机从10.5.129.180 访问10.5.128.28 [oracle@cpool ~]$ netstat -na | g ...

  9. java调优随记-堆和栈

    基础知识: 关于堆和栈,堆和栈是程序运行的关键,关于堆和栈的定义和解释可自行搜索,我比较认可以程序运行过程中他们扮演的角色作为对比的点:堆是存储的单位,而栈是程序运行时的单位.栈解决的是程序的运行问题 ...

  10. HDU_2019——向排序好的数列中插入数

    Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序.   Input 输入数据包含多 ...