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 {@Overridepublic String sayHello() {// TODO Auto-generated method stubreturn "Hello World";}@Overridepublic String say() {// TODO Auto-generated method stubreturn "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>

?

轉載于:https://www.cnblogs.com/xiaobaizhiqian/p/7746340.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253039.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Web開發者不可不知的16條原則

HTML已經走過了近20的發展歷程。從HTML4到XHTML&#xff0c;再到最近十分火熱的HTML5&#xff0c;它幾乎見證了整個互聯網的發展。但是&#xff0c;即便到現在&#xff0c;有很多基礎的概念和原則依然需要開發者高度注意。下面&#xff0c;小編向大家介紹這些應該遵循的開發原則…

MIPI DSI協議介紹

原文地址&#xff1a;http://blog.csdn .NET/qq160816/article/details/19555957 一、MIPI MIPI&#xff08;移動行業處理器接口&#xff09;是Mobile Industry Processor Interface的縮寫。MIPI&#xff08;移動行業處理器接口&#xff09;是MIPI聯盟發起的為移動應用處理器制…

NSArray、NSDictionary、NSString存儲、刪改、遍歷

NSString 創建一個NSString實例&#xff1a;NSString *str “this is string”;//字面量語法 常用API&#xff1a; stringWithFormat //創建動態字符串 -&#xff08;NSUInteger&#xff09;length //獲取字符的數量 -isEqualToString: //判斷兩個字符串是否相等 -uppercaseSt…

2018.11.14成立我的博客

2018.11.14成立我的博客轉載于:https://www.cnblogs.com/zengxx/p/9957509.html

130242014018-鄭志良-第2次實驗

一、實驗目的 1&#xff0e;熟悉體系結構的風格的概念 2&#xff0e;理解和應用管道過濾器型的風格。 3、理解解釋器的原理 4、理解編譯器模型 二、實驗環境 硬件&#xff1a; 軟件&#xff1a;Python或任何一種自己喜歡的語言 三、實驗內容 1、實現“四則運算”的簡易翻譯器。…

Hi3516A開發--掛載SD卡和U盤

一、SD卡 1、通過fdisk -l命令確認板子上的Linux系統是否識別SD卡 / # fdisk -l Disk /dev/mmcblk0: 63.8 GB, 63864569856 bytes 255 heads, 63 sectors/track, 7764 cylinders Units cylinders of 16065 * 512 8225280 bytes Device Boot Start …

【BZOJ 4170】 4170: 極光 (CDQ分治)

4170: 極光 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 121 Solved: 64Description "若是萬一琪露諾&#xff08;俗稱rhl&#xff09;進行攻擊&#xff0c;什么都好&#xff0c;冷靜地回答她的問題來吸引她。對方表現出興趣的話&#xff0c;那就慢慢地反問。在她考…

自動生成web服務器日志解析規則

2019獨角獸企業重金招聘Python工程師標準>>> 當前web服務器的多樣化使得訪問日志的數據清洗變得越來越復雜&#xff0c;企業需要投入專業的數據清洗人員編寫數據清洗規則&#xff08;解析規則或者解析正則&#xff09;&#xff0c;或者需要關心web服務器訪問日志的生…

mybatis一級緩存二級緩存

一級緩存 Mybatis對緩存提供支持&#xff0c;但是在沒有配置的默認情況下&#xff0c;它只開啟一級緩存&#xff0c;一級緩存只是相對于同一個SqlSession而言。所以在參數和SQL完全一樣的情況下&#xff0c;我們使用同一個SqlSession對象調用一個Mapper方法&#xff0c;往往只執…

CMOS Sensor的調試分享

目前&#xff0c;包括移動設備在內的很多多媒體設備上都使用了攝像頭&#xff0c;而且還在以很快的速度更新換代。目前使用的攝像頭分為兩種&#xff1a;CCD(Charge Couple Device電荷偶合器件)和 CMOS(Complementary Metal Oxide Semiconductor互補金屬氧化物半導體)。這兩種各…

利用反射修改final數據域

當final修飾一個數據域時&#xff0c;意義是聲明該數據域是最終的&#xff0c;不可修改的。常見的使用場景就是eclipse自動生成的serialVersionUID一般都是final的。 另外還可以構造線程安全&#xff08;thread safe&#xff09;的immutable類&#xff0c;比如String&#xff0…

mysql簡單創建數據庫權限(待修改備注)

CREATE DATABASE web DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;一、環境&#xff1a;CentOS 6.8mysql 5.6二、背景給外包的工作人員提供我司某臺服務器的 mysql 中某個數據庫的訪問權限。之所以要做限制&#xff0c;是防止他們對我司其他的數據庫非法進行操作。三、…

Centos 能ping通域名和公網ip但是網站不能夠打開,服務器拒絕了請求。打開80端口解決。...

博客搬遷&#xff0c;給你帶來的不便&#xff0c;敬請諒解&#xff01; http://www.suanliutudousi.com/2017/10/29/centos-%E8%83%BDping%E9%80%9A%E5%9F%9F%E5%90%8D%E5%92%8C%E5%85%AC%E7%BD%91ip%E4%BD%86%E6%98%AF%E7%BD%91%E7%AB%99%E4%B8%8D%E8%83%BD%E5%A4%9F%E6%89%93…

ISP 圖像傳感器camera原理

1、Color Filter Array — CFA 隨著數碼相機、手機的普及&#xff0c;CCD/CMOS 圖像傳感器近年來得到廣泛的關注和應用。 圖像傳感器一般都采用一定的模式來采集圖像數據&#xff0c;常用的有 BGR 模式和 CFA 模式。BGR 模式是一種可直接進行顯示和壓縮等處理的圖像數據模式&am…

51nod 1027 大數乘法

1027 大數乘法基準時間限制&#xff1a;1 秒 空間限制&#xff1a;131072 KB 分值: 0 難度&#xff1a;基礎題收藏關注給出2個大整數A,B&#xff0c;計算A*B的結果。 Input第1行&#xff1a;大數A 第2行&#xff1a;大數B (A,B的長度 < 1000&#xff0c;A,B > 0&#xff…

file mmap

do_set_pmd統計參數只會在這里設置&#xff1a; add_mm_counter(vma->vm_mm, MM_FILEPAGES, HPAGE_PMD_NR);但是這貌似都是處理大頁的情況哪&#xff0c;小頁呢&#xff1f; alloc_set_pte中有函數&#xff1a;inc_mm_couter_fast(vma->vm_mm, mm_couter_file(page)&…

Linux鏈接庫三(C跟C++之間動態庫的相互調用)

http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http://www.jb51.net/article/34990.htm C和C之間庫的互相調用 extern "C"的理解&#xff1a; 很多人認為"C"表示的C語言&#xff0c;實際并非如此&…

C#如何開發多語言支持的Winform程序

C# Winform項目多語言實現(支持簡/繁/英三種語言)有很多種方案實現多語言&#xff0c;我在這里介紹一種最簡單最容易理解的&#xff0c;作為教學材題應該從通俗易懂入手。在寫這篇文章之前&#xff0c;本來想用枚舉窗體對象成員的方式設置語言&#xff0c;但是找不到源代碼了&a…

Alpha 沖刺 (2/10)

Alpha 沖刺 &#xff08;2/10&#xff09; 隊名&#xff1a;第三視角 組長博客鏈接 本次作業鏈接 團隊部分 團隊燃盡圖 工作情況匯報 張揚&#xff08;組長&#xff09; 過去兩天完成了哪些任務&#xff1a; 文字/口頭描述&#xff1a; 1、學習qqbot庫&#xff1b; 2、實時保存…

Linux學習之第二課時--linux命令格式及命令概述

命令概述 Linux提供了大量的命令&#xff0c;利用它可以有效地完成大量的工作&#xff0c;如磁盤管理&#xff0c;文件存取&#xff0c;目錄操作&#xff0c;進程管理&#xff0c;文件權限設定等 Linux命令格式 Linux命令的組成部分&#xff1a;命令字 命令選項參數&#xff…