文档章节

Spring IOC样例

BK灬
 BK灬
发布于 2017/05/19 17:57
字数 461
阅读 23
收藏 0

接口

public interface Person {

	public void run();

	public void eat();

	public void write();

	public void read();

}

实现类

public class Student implements Person {

	@Override
	public void run() {
		System.out.println("Student is runing");
	}

	@Override
	public void eat() {
		System.out.println("Student is eating");
	}

	@Override
	public void write() {
		System.out.println("Student is writing");
	}

	@Override
	public void read() {
		System.out.println("Student is reading");
	}

}
public class Teacher implements Person {

	@Override
	public void run() {
		System.out.println("Teacher is running");
	}

	@Override
	public void eat() {
		System.out.println("Teacher is eating");
	}

	@Override
	public void write() {
		System.out.println("Teacher is writing");
	}

	@Override
	public void read() {
		System.out.println("Teacher is reading");
	}

}

启动器

/**
 * 控制反转:将创建哪个具体对象的控制权交到spring的xml文件中
 * 
 * 由主动行为变成了被动行为,即把创建对象交给了IoC容器处理,控制权颠倒过来了,这就是控制反转的由来
 * 
 * 依赖注入(DI)和控制反转(IoC)是从不同的角度描述的同一件事情,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦。
 * 
 * 控制权由应用代码中转到了外部容器,控制权的转移
 * 
 * @author darker
 *
 */
public class PersonExample {
	
	public static void main(String[] args) {
		
//		Person p = new Student();
//		p.run();
		
		// 读取配置文件(将配置文件中的bean加载进内存)
		ApplicationContext ctx = new ClassPathXmlApplicationContext("ioc.xml");
		// 获取实例(区分大小写)
		Person teacher = (Person)ctx.getBean("IOCTeacher");
		Person student = (Person)ctx.getBean("IOCStudent");
		// 调用方法
		teacher.read();
		student.read();
	}
}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
    http://www.springframework.org/schema/aop  
    http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    <!-- 控制反转 注册bean -->
    <bean id="IOCTeacher" class="com.ninemax.ak.spring.ioc.Teacher"/>
    <bean id="IOCStudent" class="com.ninemax.ak.spring.ioc.Student"/>
    <bean id="DITeacher" class="com.ninemax.ak.spring.di.DITeacher"/>
    
    <!-- 依赖注入 注册javabean -->
    <bean id="DIModel" class="com.ninemax.ak.spring.di.Model" >
    <!-- 注入javabean中的参数 -->
        <property name = "person" ref = "DITeacher"></property>
        <property name = "name" value = "xxx"></property>
    </bean>
</beans>

 

© 著作权归作者所有

上一篇: 2017-05-26
下一篇: Spring AOP样例
BK灬

BK灬

粉丝 46
博文 343
码字总数 142562
作品 0
朝阳
后端工程师
私信 提问
再谈Spring BeanPostProcessor

之前已经就spring中的BeanPostProcessor使用方法以及其实现细节谈论过,现在从更加宏观、抽象的角度去理解spring的bpp具体是如何工作的,现在spring自身有多少bpp,如果我们有自定义的bpp需求...

jwfy
2018/07/03
0
0
【死磕 Spring】—– IOC 之 IOC 初始化总结

原文出自:http://cmsblogs.com 前面 13 篇博文从源码层次分析了 IOC 整个初始化过程,这篇就这些内容做一个总结将其连贯起来。 在前文提过,IOC 容器的初始化过程分为三步骤:Resource 定位...

chenssy
2018/10/09
0
0
最全的Spring面试题和答案

1、什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员...

流氓兔-
02/22
0
0
那些年,我们一起追的Spring

学无止境,但仍需及时总结。 自去年开始写作以来,写了一些关于Spring的文章,今天将它们汇总起来,一方面方便大家阅读,另一方面,也是一次小的复盘总结。 IOC 首先是Spring的IOC,也就是控...

SexyCode
2018/08/14
0
0
三条路线告诉你如何掌握Spring IoC容器的核心原理

一、前言 前三篇已经从历史的角度和大家一起探讨了为什么会有Spring,Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国。本节的主要目的就是通过一个切入点带大家一...

Java小铺
2018/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java的线程同步和并发问题示例

并发问题 多线程是一个非常强大的工具,它使我们能够更好地利用系统的资源,但我们需要在读取和写入多个线程共享的数据时特别小心。 当多个线程尝试同时读取和写入共享数据时,会出现两种类型...

hiuh
今天
3
0
Spring Boot 常用注解说明

实体类 @Entity (实体类注解) @Table(可指定表名) @Data(可缺省get/set) @Id (指定属性主键) @GeneratedValue(指定主键生成规则)

兜兜毛毛
今天
3
0
局域网能互相ping通,ubuntu虚拟机不能上外网

【问题】 桥接模式老是无法上网,查看本机IP发现被分配了一个私网地址,猜测应该是虚拟DHCP服务器没有打开,于是查看Ubuntu的网络配置: /etc/network/interfaces 发现没有dhcp配置的信息,只...

tahiti_aa
今天
2
0
以太坊助记词PHP开发包简介

以太坊助记词PHP开发包用来为PHP以太坊应用增加助记词和层级确定密钥支持能力。下载地址:以太坊助记词php开发包 。 1、开发包概述 以太坊助记词PHP开发包主要包括以下特性: 生成符合BIP39...

汇智网教程
昨天
4
0
系统监控-分布式调用链Skywalking

1. 为什么要使用分布式调用链技术? 随着公司业务的高速发展,公司服务之间的调用关系愈加复杂,如何理清并跟踪它们之间的调用关系就显的比较关键。线上每一个请求会经过多个业务系统,并产生...

秋日芒草
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部