二、spring管理对象的简单例子

  任何需要交给spring管理的对象,都必须在配置文件中注册,这个过程被称为wiring,下面做一个最简单的Hello world演示,我们将要注册的类如下:

  1. /*
  2. * 创建日期 2005-3-22
  3. */
  4. package org.bromon.spring.test;
  5. /**
  6. * @author Bromon
  7. */
  8. public class HelloTalker
  9. {
  10. public String greeting()
  11. {
  12. return "hello world";
  13. }
  14. }
字串2

  然后我们来编写一个spring配置文件,文件名任意,在我这里它是springConfig.xml,需要注意的是这个文件应该存放在classpath所包含的路径中:

  1. "1.0" encoding="UTF-8"?>
  2. "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  3.  class=" org.bromon.spring.test.HelloTalker">
  4.  

  通过使用bean标签,注册了一个HelloTalker对象,它的名字叫做helloTalker。然后我们编写一个测试类,它的工作是利用spring框架提供的接口,加载配置文件,通过指定对象的id,获得一个对象。它的代码如下:

字串6
  1. /*
  2. * 创建日期 2005-3-17
  3. */
  4. package org.bromon.spring.test.junit;
  5. import java.io.FileInputStream;
  6. import org.springframework.beans.factory.xml.XmlBeanFactory;
  7. import org.springframework.context.ApplicationContext;
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;
  9. import org.bromon.spring.test;
  10. /**
  11. * @author Bromon
  12. */
  13. public class TestStudentManager extends TestCase {
  14. public void testHelloTalker()
  15. {
  16. try
  17. {
  18. ApplicationContext context =new ClassPathXmlApplicationContext("springConfig.xml");
  19. HelloTalker ht=(HelloTalker)context.getBean("helloTalker");
  20. System.out.println(ht.greeting());
  21. }catch(Exception e)
  22. {
  23. e.printStackTrace();
  24. }
  25. }
  26. }

字串1

  这个程序就完成了,因为只有一个对象HelloTalker被注册到了spring中,所以不存在对象间的依赖,当然也就不涉及依赖注入。下面演示一个简单的依赖注入:

  第一步是修改HelloTalker,增加一个String name属性:

  1. public String name;

  为该属性编写set方法,该方法必须严格遵守javabean的命名规则:

  1. public void setName(String name)
  2. {
  3.   this.name=name;
  4. }

字串9
  修改greeting方法:

  1. public String greeting()
  2. {
  3.   return "hello "+name;
  4. }

  如你所见,name属性没有初试化,因为它的值将在运行过程中被spring动态注射入。

  第二步,修改springConfig.xml中唯一的这个bean配置:

  1. class=" org.bromon.spring.test.HelloTalker">
  2.   bromon
  3.  

字串8

  修改完成。我们将一个名字"bromon"写死在springConfig.xml中,它会被动态的注入到HelloTalker的name属性中,greeting方法将会把它打印出来。重新运行刚才的junit类,可以看到结果。

  我们只演示了如何注入一个最简单的String,实际上我们可以注入任何值类型,也可以注入任何类的实例,也可以注入List、Map、 Properties。配置文件管理了所有的对象和对象间的关系,而对象则只负责执行自己的功能,他们的职责越少,藕合度越低,系统就越容易测试,管理维护也更容易。

  标签还有很多属性,用于指定对象如何被实例化,它也有很多子标签用于配置对象的属性,请大家参考相关的DTD和文档,能够很快的掌握。本系列文章不是spring手册,spring的基础知识请参考spring in action,足够详细准确。后面的章节更多的讨论系统设计、开发的一些细节和高级特性。

来自:http://www.javah.net/Spring/20070405/84.html

学习SPRING在春天 - Learn Spring in spring(二)相关推荐

  1. spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring

    spring框架mvc框架 Spring Framework is one of the most widely used Java EE Frameworks. It's an open sourc ...

  2. spring(春天)

    目录 spring案例 spring优点 组成 引入基础jar包 IOC理论 IOC容器--Bean管理xml的方式 什么是bean管理? IOC操作Bean管理两种方式(创建类和注入属性的方式) I ...

  3. Spring Security技术栈学习笔记(十四)使用Spring Social集成QQ登录验证方式

    上一篇文章<Spring Security技术栈开发企业级认证与授权(十三)Spring Social集成第三方登录验证开发流程介绍>主要是介绍了OAuth2协议的基本内容以及Spring ...

  4. Spring源码深度分析一-Spring前世今生以及源码学习路线图

    大家好,我是王老狮,今天开始开新坑.作为JAVA程序员,Spring基本上是必备的技能,也是面试经常考核的技能,特别是大厂,Spring源码基本是必问的题目.但是很多同学看到源码就头疼,根本不知道源码 ...

  5. Spring框架学习笔记(1) ---[spring框架概念 , 初步上手使用Spring , 控制反转 依赖注入初步理解 ]

    spring官网 -->spring官网 spring5.3.12–>spring-framework 在线文档 --> Spring 5.3.12 文章目录 1.Spring概论 ...

  6. 春天来啦:Spring框架概述

    SPRING框架--由来和发展 Spring是 java平台上的一个 开源应用框架.它的第一个版本是由 Rod Johnson写出来的.Rod在他的Expert One-On-One Java EE ...

  7. springCloud学习-高可用的分布式配置中心(Spring Cloud Config)

    1.简介 高可用的分布式配置中心,即将配置中心做成一个微服务,将其集群化,从而达到高可用.config-server和config-client向eureka-server注册,且将config-se ...

  8. 春天的故事-Spring Security3十五日研究

    sparta-紫杉   2011-4-2 22:00 前言 南朝<述异记>中记载,晋王质上山砍柴,见二童子下棋,未看完,斧柄已烂,下山回村,闻同代人都去世了,自已还未变老.     因此发 ...

  9. Spring学习总结(四)——表达式语言 Spring Expression Language

    SpEL简介与功能特性 Spring表达式语言(简称SpEL)是一个支持查询并在运行时操纵一个对象图的功能强大的表达式语言.SpEL语言的语法类似于统一EL,但提供了更多的功能,最主要的是显式方法调用 ...

最新文章

  1. 计算机四级网络工程师考点速查,全国计算机等级考试标准教程:四级网络工程师...
  2. mysql 金额 类型,SQL实现根据类型对金额进行归类
  3. OnlineJudge 离线题库采集
  4. JasperReports JSF插件用例–简单列表报告
  5. bzoj2763:最短路
  6. php中的分页类Page的用法
  7. IIS添加对ashx文件的支持
  8. 一个完整的Java Web项目需要掌握哪些技术
  9. 线程系列2---线程同步
  10. 致敬mentohust,路由器使用Socket认证华科校园网
  11. INDEX函数与MATCH函数嵌套使用技巧
  12. 北京信息科技大学计算机学院官网,北京信息科技大学教务处官网入口地址
  13. 04-若依基础架构解析
  14. element-ui table的选中行高亮和取消高亮
  15. 兀键和6键怎么判断_σ键、π键和大π键
  16. Rogue Signs: Deceiving Traffic Sign Recognition with Malicious Ads and Logos
  17. (操作系统) 常见面试题整理
  18. C#:根据银行卡卡号判断银行名称
  19. [转]order by 1是什么意思?
  20. 瑞萨电子被汽车等十数家配货信息网企业欲收购

热门文章

  1. 面试字节,简历做了点手脚,第三方背调公司查出来了,被撤销offer!
  2. 3GPP R16的Conditional handover配置确认
  3. 【开源系统脚手架】人人快速开发框架 人人VUE(renren-fast-vue)启动教程
  4. Shopee店铺新手买家不好做?那是你没有掌握这三点
  5. 一个时代的结束:全球第一大浏览器重磅更新!永久取消对Flash的支持
  6. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智慧民政服务平台xl2r9
  7. Windows NT 技术(NT:New Technoly)
  8. 朋友圈广告助手_2019年,微信朋友圈广告最受喜爱的10条
  9. Kettle(ETL利器)实战应用大全
  10. Kubernetes 笔记(08)— Daemonset 产生缘由、yaml 描述、使用方法、污点和容忍度的定义及使用、静态 Pod