实现的功能以及各文件间的关系

IHelloMessage:一个接口,用于定义输出问候信息。

HelloWorld、HelloChina:接口的实现类。在这里表示人在不同的地方

Person:一个人物类,调用IHelloMessage接口,向用户输出问候信息

Main:程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息

IHelloMessage

  1. public interface IhelloMessage {
  2.  
  3. public String sayHello();
  4. public String say();
  5.  
  6. }

HelloWorld、HelloChina

  1. public class HelloWord implements IhelloMessage {
  2.  
  3. @Override
  4. public String sayHello() {
  5. // TODO Auto-generated method stub
  6. return "Hello World";
  7. }
  8.  
  9. @Override
  10. public String say() {
  11. // TODO Auto-generated method stub
  12. return "ceshi";
  13. }
  14.  
  15. }

Person

  1. public class Person {
  2.  
  3. private IhelloMessage helloMessage;
  4.  
  5. public void setHelloMessage(IhelloMessage helloMessage) {
  6. this.helloMessage = helloMessage;
  7. }
  8.  
  9. public IhelloMessage getHelloMessage() {
  10. return helloMessage;
  11. }
  12.  
  13. public String sayHello() {
  14.  
  15. return helloMessage.say();
  16.  
  17. }
  18.  
  19. }

Main

  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4. // 读取配置文件
  5. Resource resource = new FileSystemResource("helloMessage.xml");
  6. // 加载并启动IOC容器
  7. BeanFactory factory = new XmlBeanFactory(resource);
  8. // 从容器中获取实例
  9. Person person = (Person) factory.getBean("person");
  10. String str = person.sayHello();
  11. System.out.println(str);
  12. }
  13.  
  14. }

spring3.1以上的版本中XmlBeanFactory已过时,有两种解决方案

1.将XmlBeanFactory替换成DefaultListableBeanFactory和XmlBeanDefinitionReader,代码如下Main类所写

  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4. // 读取配置文件
  5. Resource resource = new FileSystemResource("helloMessage.xml");
  6. // 构造工厂
  7. DefaultListableBeanFactory factory= new DefaultListableBeanFactory ();
  8. // 通过构造工厂得到加载并启动IOC容器
  9. XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
  10. // 将读取到的配置文件加载到容器中
  11. reader.loadBeanDefinitions(resource);
  12. // 从容器中获取实例
  13. Person person = (Person) factory.getBean("person");
  14. String str = person.sayHello();
  15. System.out.println(str);
  16. }
  17.  
  18. }

2.使用其它几种方式加载配置文件。详见Spring---加载配置文件的几种方法(org.springframework.beans.factory.BeanDefinitionStoreException)

配置文件xml

Java bean

每个bean对应一个java文件,当这个类文件配置到spring容器当中后,就变成了一个一个小豆子,而每个小豆子都拥有自己独立的功能。在运行spring工程之前,我们需要做的有两件事情。第一,将这些java类以java bean的形式注册到spring容器中。第二,通过配置文件来配置java bean之间的依赖关系。各个单独的类(组件)只需要关心自己的核心业务逻辑,而它们之间的依赖关系,则交由spring容器来配置和管理,这就是控制反转,而相对于类(组件),我们则可以称为依赖注入。以下是配置文件的示例代码

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- 定义使用哪种规范进行解析配置文件 -->
  3. <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
  4. "http://www.springframework.org/dtd/spring-beans.dtd">
  5. <beans>
  6. <!-- bean:定义java bean -->
  7. <bean id = "helloWorld" class = "com.hudongwu.spring.chapter01.HelloWord"></bean>
  8. <bean id = "helloChina" class = "com.hudongwu.spring.chapter01.HelloChina"></bean>
  9. <bean id = "person" class = "com.hudongwu.spring.chapter01.Person">
  10. <!-- 与其它java bean建立依赖关系 -->
  11. <property name="helloMessage" ref="helloWorld"></property>
  12. </bean>
  13. </beans>

Spring---基于Spring IOC的小程序的更多相关文章

  1. 基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺

    第一个基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺 还没来得及用 API 重写软件, 先写个小程序来缓解一下手工压力: 批量Copy 产品到不同的店铺. 开网店 ...

  2. 基于AliOS的车载小程序

    4月16日上海国际车展首日,阿里巴巴表示正在研发基于AliOS的车载小程序.同时还展出AI HUD.AI驾驶舱等最新技术,AliOS表示正在构建一个可持续发展的整合平台. 阿里方面表示,作为小程序在车 ...

  3. 教你轻松构建基于 Serverless 架构的小程序

    前言 自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现.小程序触手可及.用完即走的优点,大大降低了用户的使用负担,也使小程序得到了广泛的传播.在阿里巴巴,小程序也被广泛地应 ...

  4. spring mvc+redis实现微信小程序登录

    本文将详细的介绍微信小程序的登录流程以及在ssm框架下如何实现小程序用户登录 登录流程概要 主要的登录流程可以参考官方提供的一张流程图: 1.微信前台页面: 在微信版本更新之后,提高了安全机制,我们需 ...

  5. 基于mpvue搭建微信小程序

    mpvue是美团开源的一套语法,语法与vue.js一致,快速开发小程序的前端框架.框架基于vue.js核心,修改了vue.js的runtime和compiler实现,使用此框架,开发者可以完全使用vu ...

  6. 基于centos搭建微信小程序服务,配置及数据库等

    基于centos搭建小程序, ps:请提前20天准备将域名备案,申请ssl证书 实验上机地址:https://cloud.tencent.com/developer/labs/lab/10004 准备 ...

  7. Django基于JWT实现微信小程序的登录和鉴权

    什么是JWT? JWT,全称Json Web Token,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 与Session的区别 一.Session是在服务 ...

  8. 基于bmob后端云小程序开发——口袋吉他

    人的一生90%的时间都在做着无聊的事情,社会的发展使得我们的闲暇时间越来越多,我们把除了工作的其他时间放在各种娱乐活动上. 程序员有点特殊,他们把敲代码看成娱乐活动的一部分,以此打发时间的不占少数.这 ...

  9. 基于 mpvue 框架的小程序选择控件,支持单列,多列,联动

    最近在学着写mpvue小程序,在做选择控件时候遇到了点问题,按照微信小程序方法picker,很不方便! 在网上搜到一个很好用的组件下面给大家分享: 组件说明文档链接:https://go.ctolib ...

  10. 基于uni-app的微信小程序之分包

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 0. 缘由 1. 关于分包 1.0 这是 官方文档 1.1 注意事项 2.使用方法 2.1 首先你得有个uniapp的微信小程序项目 2.2 ...

随机推荐

  1. shiro web环境初始化过程

    在web工程中使用shiro的时候需要配置一个shiro的listenser(EnvironmentLoaderListener)和一个shiro的filter(ShiroFilter). liste ...

  2. html 02-认识html

    1. HTML 初识 HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种语言. HTML 不是一种编程语言,而是一种标记语言 (markup ...

  3. JAVA中日期格式转换各个字母代表含义

    G  Era 标志符  Text  AD  y  年  Year  1996; 96  M  年中的月份  Month  July; Jul; 07  w  年中的周数  Number  27  W  ...

  4. css3动画-加载中...

    写几个简单的加载中动画吧. 像前面三种都是相当于几个不同的点轮流来播放同一动画:变大变小.css3里面有一个用于尺度变换的方法:scale(x,y):定义 2D 缩放转换,改变元素的宽度和高度. 第四 ...

  5. js或者jq判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色

    如何判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色(在html中)比如有body中有这么一串文字“驾驶的后视镜的华盛顿”,想要判断里面是否有“驾驶”这两个字,如果有就把这两个字变成 ...

  6. 创作了一个xml的替代格式

    xml格式: <?xml version="1.0" encoding="GB2312"?> <Relations> <Relat ...

  7. UGUI的事件系统分析

    UGUI的源码还是非常清晰的,打开源码可以发现, 从UGUI的源码可知:在EventSystem中调用每一帧函数来实现: private void TickModules() { for (var i ...

  8. 联动选择通过ajax获取选择对应的数据

    网站有时候需要这种联动然后获取到想对应的数据 思路: 这种的话就是你每次选择哪一个就将这个设置一个标注 表示你现在选择的是哪一个 然后每选择一次就进行一次ajax查询,ajax里面有一个data里面添 ...

  9. iOS Dispatch_sync 阻塞线程的原因

    大家的知道在主队列上使用dispatch_sync(), - (void)testSyncMainThread { dispatch_queue_t main = dispatch_get_main_ ...

  10. Problem C: 动态规划基础题目之数字三角形

    Problem C: 动态规划基础题目之数字三角形 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 208  Solved: 139[Submit][Sta ...