IOC的实现
1.person的代码
package com.ioc;
public interface Person {
void eat();
void sleep();
}
2.man的代码
package com.ioc;
public class Man implements Person {
@Override
public void eat() {
}
@Override
public void sleep() {
}
}
3.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- ioc控制反转-->
<bean name="person" class="com.ioc.Man"></bean>
</beans>
4.主代码
package com.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
public static void main(String[] args) {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("application.xml");
Person person=(Man)applicationContext.getBean("person");
System.out.println(person);
}
}
DI的使用
代码:
package com.di;
public interface Axe {
void cut();
}
package com.di;
public class SteelAxe implements Axe{
@Override
public void cut() {
System.out.println("铁做的斧子");
}
}
package com.di;
public class StoneAxe implements Axe {
@Override
public void cut() {
System.out.println("石头做的斧子");
}
}
package com.di;
public class user {
private Axe axe;
public Axe getAxe() {
return axe;
}
public void setAxe(Axe axe) {
this.axe = axe;
}
public void chop() {
this.axe.cut();
}
}
package com.di;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
public static void main(String[] args) {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("application.xml");
user use=(user)applicationContext.getBean("user");
use.chop();
}
}
<!-- di注入-->
<bean name="stoneAxe" class="com.di.StoneAxe"/>
<bean name="stellAxe" class="com.di.SteelAxe"></bean>
<bean name="user" class="com.di.user">
<property name="axe" ref="stellAxe"/>
</bean>
注解的方式
<!--开始spring的注解-->
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.di2"/>
package com.di2;
public interface Axe {
void cut();
}
package com.di2;
import org.springframework.stereotype.Component;
@Component(value = "stoneaxe")
public class SteelAxe implements Axe {
@Override
public void cut() {
System.out.println("铁做的斧子");
}
}
package com.di2;
import org.springframework.stereotype.Component;
public class StoneAxe implements Axe {
@Override
public void cut() {
System.out.println("石头做的斧子");
}
}
package com.di2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component(value = "kkkk")
public class User {
@Autowired
private Axe axe;
public Axe getAxe() {
return axe;
}
public void setAxe(Axe axe) {
this.axe = axe;
}
public void chop() {
this.axe.cut();
}
}
package com.di2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
public static void main(String[] args) {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("application.xml");
User use=(User)applicationContext.getBean("kkkk");
use.chop();
}
}