如果你是一个java程序,肯定会听过spring。然后你也会对IOC和AOP倍感好奇。我也不罗列概念,如果不懂可以到网上百科一下,很详细。 我简单的引入控制反转(IOC)的形式以及作用
实例1:A类需要B类的实例时,直接在A类中new一个B 的实例。这是中耦合性太强
public class B {
public B(){}
public void bout(){
System.out.println("B");
}
}
public class A {
private B b=new B();
public A(B b){
this.b=b;
}
public void aout(){
System.out.println(“A”);
b.bout();
}
}
实例2:
//定义接口
public interface InterfaceB {
public void out();
}
//实现接口
public class ClassB implements InterfaceB {
public ClassB(){
}
public void out() {
}
}
public class ClassA {
private InterfaceB b;
//这是我们平时用的方法
public ClassA(){
this.b=new ClassB();
}
//这就是我想要结果,将需要的实例由外部类提供。而不由自身实现。
public ClassA(InterfaceB b){
this.b=b;
}
public void out(){
System.out.println("");
this.b.out();
}
}
那么我们要的实例由谁提供管理呢? 这就要说到spring里面的IOC。还是说说它的简单概念。
IOC Inversion of Control,即控制反转,是一个重要的面向对象编程的法则,用来减少耦合度。控制反转还有一个名字叫做依赖注入(Dependency Injection),简称DI。IoC不是什么技术,与GoF一样,是一种设计模式。应用控制反转,对象在被创建的时候,由一个调控所有对象的容器,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。
实例说明问题 :
HelloService 接口
/**
*
*/
package com.ch.hello;
/**
* @author 陈华
*
*/
public interface HelloService {
public void sayHello();
}
HelloServiceImp
/**
*
*/
package com.ch.hello.impl;
import com.ch.hello.HelloService;
/**
* @author 陈华
*
*/
public class HelloServiceImp implements HelloService {
private String helloworld;
public HelloServiceImp() {
}
public HelloServiceImp(String helloworld) {
this.helloworld = helloworld;
}
public void setHelloworld(String helloworld) {
this.helloworld = helloworld;
}
public void sayHello() {
System.out.println(this.helloworld);
}
}
applicationcontext.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-2.5.xsd"> <bean id="HelloService" class="com.ch.hello.impl.HelloServiceImp"> <property name="helloworld" value="hello,android!"></property> </bean> </beans>
测试类
/**
*
*/
package com.ch.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.ch.hello.HelloService;
/**
* @author 陈华
*
*/
public class HelloClient {
public static void main(String[] args) {
ApplicationContext ac=new FileSystemXmlApplicationContext("src/applicationContext.xml");
HelloService helloService=(HelloService)ac.getBean("HelloService");
helloService.sayHello();
}
}
ac.getBean("HelloService"); 这句是关键获取实例
创建一个简单的java工程,引入spring 的core包。用myeclipse6.5就可以啦。非常快
我的 QQ 455927885 一起探讨学习。