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

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

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

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

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

IHelloMessage

public interface IhelloMessage {

    public String sayHello();
public String say(); }

HelloWorld、HelloChina

public class HelloWord implements IhelloMessage {

    @Override
public String sayHello() {
// TODO Auto-generated method stub
return "Hello World";
} @Override
public String say() {
// TODO Auto-generated method stub
return "ceshi";
} }

Person

public class Person {

    private IhelloMessage helloMessage;

    public void setHelloMessage(IhelloMessage helloMessage) {
this.helloMessage = helloMessage;
} public IhelloMessage getHelloMessage() {
return helloMessage;
} public String sayHello() { return helloMessage.say(); } }

Main

public class Main {

    public static void main(String[] args) {
// 读取配置文件
Resource resource = new FileSystemResource("helloMessage.xml");
// 加载并启动IOC容器
BeanFactory factory = new XmlBeanFactory(resource);
// 从容器中获取实例
Person person = (Person) factory.getBean("person");
String str = person.sayHello();
System.out.println(str);
} }

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

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

public class Main {

    public static void main(String[] args) {
// 读取配置文件
Resource resource = new FileSystemResource("helloMessage.xml");
// 构造工厂
DefaultListableBeanFactory factory= new DefaultListableBeanFactory ();
// 通过构造工厂得到加载并启动IOC容器
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
// 将读取到的配置文件加载到容器中
reader.loadBeanDefinitions(resource);
// 从容器中获取实例
Person person = (Person) factory.getBean("person");
String str = person.sayHello();
System.out.println(str);
} }

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

配置文件xml

Java bean

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

<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义使用哪种规范进行解析配置文件 -->
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- bean:定义java bean -->
<bean id = "helloWorld" class = "com.hudongwu.spring.chapter01.HelloWord"></bean>
<bean id = "helloChina" class = "com.hudongwu.spring.chapter01.HelloChina"></bean>
<bean id = "person" class = "com.hudongwu.spring.chapter01.Person">
<!-- 与其它java bean建立依赖关系 -->
<property name="helloMessage" ref="helloWorld"></property>
</bean>
</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. Java 打印PDF文档的3种情况

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 静默打印 显示打印对话框打印 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar导入: 方法1:通过官网 ...

  2. linux设置history历史记录

    #说明export HISTSIZE=1000 #设置历史记录显示1000行export HISTTIMEFORMAT='%F %T ' #设置历史记录格式 999 2017-08-15 10:58: ...

  3. iptables (1) 原理

    网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能有所帮助. iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防 ...

  4. 【BZOJ2141】排队

    点此看题面 大致题意: 给你一个序列,每次交换两个数,求每次操作后的逆序对个数. 关于另一道题目 推荐先去看一下这道题目:[洛谷3759][TJOI2017] 不勤劳的图书管理员(貌似是此题的升级版) ...

  5. flutter 踩坑总结

    导入第三方库踩坑小结: (编译器:VsCode) ( 打算在学习中,使用flutter重新自己的项目,遇到比较特殊的坑,就先记录一下,持续更新中) 1.把第三方库 写入pubspec.yaml文件中 ...

  6. AngularJS 字符串

    AngularJS字符串就像是JavaScript字符串 <!DOCTYPE html><html><head><meta http-equiv=" ...

  7. nginx入门学习步骤(linux)

    一.nginx下载(nginx-1.9.9) http://nginx.org/download/ 二.解压到指定文件夹 tar -zxvf 解压缩文件 三.设置配置信息 在nignx解压文件夹内执行 ...

  8. 谭浩强 c++程序设计第一章课后习题 第7题

    #include <iostream> using namespace std; int main() { int a,b,c; int f(int x,int y,int z);//这是 ...

  9. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  10. 处理侧滑返回与 ScrollView 手势冲突

    与处理双击.单击手势互斥原则一样: // 手势互斥(侧滑返回手势失效后才响应UITableView的滑动手势) [tableView.panGestureRecognizer requireGestu ...