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

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. selenium+phantomjs报错:Unable to find a free port的分析和解决

    selenium+phantomjs报错:Unable to find a free port的分析和解决 Table of Contents 1. 现象 2. 分析 3. 解决办法 1 现象 在做项 ...

  2. NGSL + NAWL 单词表 以及学习网站

    https://quizlet.com/44769538/nawl-1-1-50-flash-cards/ NAWL 网站 NAWL 单词表  + NGSL 单词表 http://www.newgen ...

  3. NC57访问报错:java.sql.SQLException: Io 异常: Got minus one from a read call

    一.报错信息 1.  前端登录界面 2.  后台应用日志 报错信息一致为: $$callid= $$thread=[Service Monitor and Runtime Enroment] $$ho ...

  4. PL/SQL中模拟EBS上下文

    有时,我们需要查询的表或视图,是具有OU屏蔽的,这时我们就需要模拟EBS中的上下文来实现查询数据. BEGIN fnd_global.apps_initialize(user_id =>1,re ...

  5. No module named 'revoscalepy'问题解决

    SqlServer2017开始支持Python,前段时间体验了下,按照微软的入门例子操作的:https://microsoft.github.io/sql-ml-tutorials/python/re ...

  6. SQL Server 08版与14版处理重复行的方式

    在项目中,利用循环拼接成了插入多行数据的SQL语句: Insert into table(col1,col2)vaules(value11,value21); Insert into table(co ...

  7. Mac下对PhpStorm主题的添加

    大家都知道,作为一个PHPer,PhpStorm是圈内评价较高的一款IDE. 所以,为了有一个更加个性化的coding界面,我们有很多的主题可以使用. phpStorm自带了好几个主题,你可以通过以下 ...

  8. 解决IE下面诡异地使用quickrIE5模式打开页面的有关问题

    解决IE下面诡异地使用quickrIE5模式打开页面的有关问题 <!doctype html public "-//w3c//dtd html 4.01 transitional//e ...

  9. vs2010 opencv2.4.10 配置过程出现的问题 & mfc打开图片

    配置参考网址: http://blog.csdn.net/zy122121cs/article/details/49180541 无法启动程序,系统找不到指定的文件:原因是程序编译有错误(不是路径之类 ...

  10. Codeforces Round #323 (Div. 2) C GCD Table 582A (贪心)

    对角线上的元素就是a[i],而且在所在行和列中最大, 首先可以确定的是最大的元素一定是a[i]之一,这让人想到到了排序. 经过排序后,每次选最大的数字,如果不是之前更大数字的gcd,那么只能是a[i] ...