Spring---基于Spring IOC的小程序
实现的功能以及各文件间的关系
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的小程序的更多相关文章
- 基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺
第一个基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺 还没来得及用 API 重写软件, 先写个小程序来缓解一下手工压力: 批量Copy 产品到不同的店铺. 开网店 ...
- 基于AliOS的车载小程序
4月16日上海国际车展首日,阿里巴巴表示正在研发基于AliOS的车载小程序.同时还展出AI HUD.AI驾驶舱等最新技术,AliOS表示正在构建一个可持续发展的整合平台. 阿里方面表示,作为小程序在车 ...
- 教你轻松构建基于 Serverless 架构的小程序
前言 自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现.小程序触手可及.用完即走的优点,大大降低了用户的使用负担,也使小程序得到了广泛的传播.在阿里巴巴,小程序也被广泛地应 ...
- spring mvc+redis实现微信小程序登录
本文将详细的介绍微信小程序的登录流程以及在ssm框架下如何实现小程序用户登录 登录流程概要 主要的登录流程可以参考官方提供的一张流程图: 1.微信前台页面: 在微信版本更新之后,提高了安全机制,我们需 ...
- 基于mpvue搭建微信小程序
mpvue是美团开源的一套语法,语法与vue.js一致,快速开发小程序的前端框架.框架基于vue.js核心,修改了vue.js的runtime和compiler实现,使用此框架,开发者可以完全使用vu ...
- 基于centos搭建微信小程序服务,配置及数据库等
基于centos搭建小程序, ps:请提前20天准备将域名备案,申请ssl证书 实验上机地址:https://cloud.tencent.com/developer/labs/lab/10004 准备 ...
- Django基于JWT实现微信小程序的登录和鉴权
什么是JWT? JWT,全称Json Web Token,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 与Session的区别 一.Session是在服务 ...
- 基于bmob后端云小程序开发——口袋吉他
人的一生90%的时间都在做着无聊的事情,社会的发展使得我们的闲暇时间越来越多,我们把除了工作的其他时间放在各种娱乐活动上. 程序员有点特殊,他们把敲代码看成娱乐活动的一部分,以此打发时间的不占少数.这 ...
- 基于 mpvue 框架的小程序选择控件,支持单列,多列,联动
最近在学着写mpvue小程序,在做选择控件时候遇到了点问题,按照微信小程序方法picker,很不方便! 在网上搜到一个很好用的组件下面给大家分享: 组件说明文档链接:https://go.ctolib ...
- 基于uni-app的微信小程序之分包
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 0. 缘由 1. 关于分包 1.0 这是 官方文档 1.1 注意事项 2.使用方法 2.1 首先你得有个uniapp的微信小程序项目 2.2 ...
随机推荐
- shiro web环境初始化过程
在web工程中使用shiro的时候需要配置一个shiro的listenser(EnvironmentLoaderListener)和一个shiro的filter(ShiroFilter). liste ...
- html 02-认识html
1. HTML 初识 HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种语言. HTML 不是一种编程语言,而是一种标记语言 (markup ...
- JAVA中日期格式转换各个字母代表含义
G Era 标志符 Text AD y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 W ...
- css3动画-加载中...
写几个简单的加载中动画吧. 像前面三种都是相当于几个不同的点轮流来播放同一动画:变大变小.css3里面有一个用于尺度变换的方法:scale(x,y):定义 2D 缩放转换,改变元素的宽度和高度. 第四 ...
- js或者jq判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色
如何判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色(在html中)比如有body中有这么一串文字“驾驶的后视镜的华盛顿”,想要判断里面是否有“驾驶”这两个字,如果有就把这两个字变成 ...
- 创作了一个xml的替代格式
xml格式: <?xml version="1.0" encoding="GB2312"?> <Relations> <Relat ...
- UGUI的事件系统分析
UGUI的源码还是非常清晰的,打开源码可以发现, 从UGUI的源码可知:在EventSystem中调用每一帧函数来实现: private void TickModules() { for (var i ...
- 联动选择通过ajax获取选择对应的数据
网站有时候需要这种联动然后获取到想对应的数据 思路: 这种的话就是你每次选择哪一个就将这个设置一个标注 表示你现在选择的是哪一个 然后每选择一次就进行一次ajax查询,ajax里面有一个data里面添 ...
- iOS Dispatch_sync 阻塞线程的原因
大家的知道在主队列上使用dispatch_sync(), - (void)testSyncMainThread { dispatch_queue_t main = dispatch_get_main_ ...
- Problem C: 动态规划基础题目之数字三角形
Problem C: 动态规划基础题目之数字三角形 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 208 Solved: 139[Submit][Sta ...