---------------siwuxie095

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

创建一个基于
Spring IoC
的小程序的步骤:

 
 

  • 建立
    Spring
    工程
  • 编写
    Java
    文件
  • 编写配置文件
  • 运行示例工程

     
     

     
     

     
     

    示例:

     
     

    一个人,在中国时用中文问候大家;在外国时,用英语问候大家

     
     

    人的具体位置,由
    Spring
    的配置环境来决定的:

    ·
    当配置为中国时,则问候:"大家好"

    ·
    当配置为外国时,则问候:"Hello everybody"

     
     

     
     

     
     

     
     

     
     

    工程名:TestHelloMessage

    包名:com.siwuxie095.spring

    类名:HelloMessage.java、HelloChina.java、HelloWorld.java、

    Person.java、Main.java(主类)

     
     

     
     

    打开资源管理器,在工程 TestHelloMessage 文件夹下,创建一个

    文件夹:lib,在其中放入三个必需的 jar 包:

    (1)spring-core-4.3.7.RELEASE.jar

    (2)spring-beans-4.3.7.RELEASE.jar

    (3)commons-logging-1.2.jar

     
     

     
     

    选择三个
    jar 包,右键->Build Path->Add to Build Path

     
     

    工程结构目录如下:

     
     

     
     

     
     

     
     

     
     

    HelloMessage.java:

     
     

package com.siwuxie095.spring;

 
 

//接口 HelloMessage,用于定义输出问候信息

public interface HelloMessage {

/**

* 方法的简写,因为接口中只允许存在抽象方法和全局常量

* 所以 public 和 abstract 可以省略掉
或只省略 abstract

*/

public String sayHello();

 
 

}

 
 

 
 

 
 

HelloChina.java:

 
 

package com.siwuxie095.spring;

 
 

// HelloChina 是接口的实现类,用于输出
大家好

public class HelloChina implements HelloMessage {

 
 

@Override

public String sayHello() {

return
"大家好";

}

 
 

}

 
 

 
 

 
 

HelloWorld.java:

 
 

package com.siwuxie095.spring;

 
 

// HelloWorld 是接口的实现类,用于输出 Hello everybody

public class HelloWorld implements HelloMessage {

 
 

@Override

public String sayHello() {

return
"Hello everybody";

}

 
 

}

 
 

 
 

 
 

Person.java:

 
 

package com.siwuxie095.spring;

 
 

//Person类,用于调用 HelloMessage 接口,输出问候信息

public class Person {

 

//将HelloMessage作为一个属性,用于向大家输出问候信息

private HelloMessage helloMessage;

 
 

public HelloMessage getHelloMessage() {

return helloMessage;

}

 
 

public
void setHelloMessage(HelloMessage helloMessage) {

this.helloMessage = helloMessage;

}

 

/**

* 用于调用HelloMessage接口向用户输出问候信息,

* 具体的问候信息,由Spring的配置文件来分配和决定:

* 1.当配置文件中分配给person的是HelloChina的实体时,则输出"大家好"的信息

* 2.当配置文件中分配给person的是HelloWorld的实体时,则输出"Hello everybody"的信息

*/

public String sayHello() {

return this.helloMessage.sayHello();

}

 

 
 

}

 
 

 
 

 
 

Main.java(主类):

 
 

package com.siwuxie095.spring;

 
 

import org.springframework.beans.factory.support.DefaultListableBeanFactory;

import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;

import org.springframework.core.io.FileSystemResource;

import org.springframework.core.io.Resource;

 
 

public class Main {

 
 

/**

* 代码段(1)和(2)等效

* 因为 Spring 3.1 之后已经废弃 XmlBeanFactory

* 所以这里注释掉(2),使用(1)

* 但(2)依然可用,导入相关包和类即可

*/

public static
void main(String[] args) {

 

//(1)

//使用 FileSystemResource 来读取配置文件

Resource resource=new FileSystemResource("helloMessage.xml");

DefaultListableBeanFactory factory=new DefaultListableBeanFactory();

XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory);

reader.loadBeanDefinitions(resource);

//从IOC容器中获取Person类的实例

//Person person=(Person)b.getBean("Person");

Person person= (Person) factory.getBean("person");

//使用person类示例来输出问候信息

String str=person.sayHello();

System.out.println("The Person is currently saying:"+str);

 

 

// //(2)

// //使用 FileSystemResource() 读取配置文件 helloMessage.xml

// Resource resource=new FileSystemResource("helloMessage.xml");

// //使用 XmlBeanFactory() 加载配置文件,启动 IoC 容器

// BeanFactory factory=new XmlBeanFactory(resource);

// //从 IoC 容器中获取 Person 类的实例

// Person person=(Person) factory.getBean("person");

// String str=person.sayHello();

// System.out.println("The person is currently saying:"+str);

 

}

 
 

}

 
 

 
 

 
 

创建配置文件
helloMessage.xml:

 
 

<?xml
version="1.0"
encoding="UTF-8"?>

<beans
xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

 
 

 
 

<!-- id 和 class 是 bean 的属性,id 是唯一标识,class 是对应的类名(完全限定名) -->

<bean
id="helloChina"
class="com.siwuxie095.spring.HelloChina">

</bean>

<bean
id="helloWorld"
class="com.siwuxie095.spring.HelloWorld">

</bean>

 

<!-- 为 person 添加属性,该属性引用了bean:helloWorld -->

<!-- 此时,person 就和 helloWorld 建立了依赖关系 -->

<!-- 也可以引用 helloChina,只需要修改 ref 属性即可 -->

<!-- 它们之间的依赖关系,根据配置文件决定,具体配置谁,控制权由原来的对象本身转移到配置文件中 -->

<bean
id="person"
class="com.siwuxie095.spring.Person">

<property
name="helloMessage"
ref="helloWorld"></property>

</bean>

 
 

</beans>

 
 

 
 

此时,工程结构目录一览:

 
 

 
 

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

 
 

Spring Bean 和 JavaBean 的区别:

 
 

参考链接1参考链接2参考链接3参考链接4

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

Spring示例工程的更多相关文章

  1. 使用方法拦截机制在不修改原逻辑基础上为 spring MVC 工程添加 Redis 缓存

    首先,相关文件:链接: https://pan.baidu.com/s/1H-D2M4RfXWnKzNLmsbqiQQ 密码: 5dzk 文件说明: redis-2.4.5-win32-win64.z ...

  2. Ubuntu下使用VS Code创建Spring Boot工程

    目的 我们将在Ubuntu桌面系统下,使用VS Code(Visual Studio Code)编辑器从零开始创建一个Spring Boot工程,并实现一个简单的RESTful风格接口.使用这套流程的 ...

  3. Spring Boot工程发布到Docker

    先聊聊闲话 搞过企业级的application运维的同仁肯定深有感触,每个application的功能交叉错杂,数据交换就让人焦头烂额(当然这和顶层业务设计有关系), 几十个application发布 ...

  4. 【AT91SAM3S】英倍特串口示例工程05-UART中,串口是怎样初始化的

    在这个示例工程的main.c文件中,进入main之后,没有发现串口功能的任何配置.直接使用了printf这个东西进行输出.将软件下载到开发板上之后,在电脑端使用串口软件,可以看板子有数据发来.说明这个 ...

  5. Springboot(一):使用Intellij中的Spring Initializr来快速构建Spring Boot工程

    使用Intellij中的Spring Initializr来快速构建Spring Boot工程 New---Project 可以看到图所示的创建功能窗口.其中Initial Service Url指向 ...

  6. spring cloud 工程构建

    https://blog.csdn.net/zhou199252/article/details/80745151 https://blog.csdn.net/forezp/article/detai ...

  7. SpringCloud核心教程 | 第一篇: 使用Intellij中的Spring Initializr来快速构建Spring Cloud工程

    spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...

  8. SpringCloud核心教程 | 第二篇: 使用Intellij中的maven来快速构建Spring Cloud工程

    spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...

  9. activiti学习2:示例工程activiti-explorer.war的使用

    目录 activiti学习2:示例工程activiti-explorer.war的使用 一.搭建开发环境 二.运行示例工程 三.示例工程功能演示 1. 创建流程图 2. 部署流程图 3. 启动流程 4 ...

随机推荐

  1. LeetCode:柠檬水找零【860】

    LeetCode:柠檬水找零[860] 题目描述 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向 ...

  2. linux中添加PHP的mongoDB支持扩展

    最近使用ThinkPHP连接mongoDB数据库进行增删改查,在使用之前,需要PHP本身支持对mongoDB的连接,下面是我安装PHP的mongoDB扩展的方法 wget -c http://pecl ...

  3. Python OOP(1)

    类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外. ...

  4. 【转】kalman滤波

    Kalman Filter是一个高效的递归滤波器,它可以实现从一系列的噪声测量中,估 计动态系统的状态.广泛应用于包含Radar.计算机视觉在内的等工程应用领域,在控制理论和控制系统工程中也是一个非常 ...

  5. 算法(Algorithms)第4版 练习 2.2.9

    package com.qiusongde; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; publi ...

  6. js和jquery 两种写法 鼠标经过图片切换背景效果

    这个是javascript的写法 <img src="res/img/shop-c_32.jpg" alt="" onmouseover="th ...

  7. Oracle_Exception_01_The Network Adapter could not establish the connection

    1.IP错误或端口错误. 在设置URL时错误,例如 url="jdbc:oracle:thin:@192.168.1.11:1521:mas" 数据库服务器不正确:ping 服务器 ...

  8. 《java编程思想》:散列的原理

    以实现一个简单的HashMap为例,详细讲解在code之中. 简单解释散列原理: 1.map中内建固定大小数组,但是数组并不保存key值本身,而是保存标识key的信息 2.通过key生成数组角标,对应 ...

  9. stl_iterator.h

    stl_iterator.h // Filename: stl_iterator.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: ...

  10. Convolutional Neural Networks for Visual Recognition 1

    Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...