入门一:依赖注入

来源:互联网 发布:2016淘宝刷单违规处罚 编辑:程序博客网 时间:2024/06/07 08:07

前言:前几天看一篇文章,大意是说应该为自己写一本书,通过写书,你会对某一问题理解的更全面,更透彻。想了几天,决定把自己学习spring的过程记录下来,看似简单的几行代码,写成一篇文章,还真费了不少时间。以前学习的时候对照着书敲代码,输出结果就感觉OK,写这篇文章的时候整体的轮廓逐渐清晰,有了全面的认识,书中许多页说明的内容精炼为几句话。

环境准备

1.1 下载spring  spring-framework-3.2.2.RELEASE-dist 

解压到路径:spring-framework-3.2.2.RELEASE 

1.2 新建JAVA项目

1.3 导入相关JAR

1.3.1 spring 

      spring-core-3.2.2.RELEASE.jar

      spring-beans-3.2.2.RELEASE.jar

1.3.2 log包 ,spring的日志使用了log4j,需要导入相关包。

            log4j-1.2.8.jar.jar

            commons-logging-1.0.4.jar

            commons-logging-api-1.1.jar

第一个项目

说明:SPING的第一个功能,IOC(控制反转)DI(依赖注入)

Martin Fowler 2004年的一篇论文中提到:控制的什么方面被反转了?他总结说是获得依赖对象的方式反转了。有点抽象,先看代码再理解。

2.1 需求:向控制台输出:某人说:你好,spring!

2.2 相关程序

2.2.1 接口:IHello.java

2.2.2 实现类:CHello.java

2.3.3 spring配置文件 : hello.xml

2.3.4 应用类:HelloAppSpring.java

实现代码

3.1 接口:IHello.java

package cuigh.spring.ioc.hello;

/*

 * 功能:定义一个接口,与实现分离,业务逻辑在接口中定义,在实现类中实现。

 * */

public interface IHello {

/*

 * 功能:某人说:你好,spring!

 * 参数:某人

 * 返回:无

 * */

public void sayHello(String name);

}

3.2 实现类:CHello.java

package cuigh.spring.ioc.hello;

/*

 * 功能:实现接口IHello功能。

 * */

public class CHello implements IHello {

/*

 * 功能:向控制台输出一句话,某人说:你好,spring!

 * 参数:某人

 * 返回:无

 * */

@Override

public void sayHello(String name) {

System.out.println(name+"说:你好,spring!");

}

}

3.3 spring配置文件 : hello.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.0.xsd">

  <!-- 说明:

  1 实现类定义 

  2 容易出错的地方为拼写错误,建议采用复制、粘贴,避免不必要的错误

  -->

  <bean id="hello"

      class="cuigh.spring.ioc.hello.CHello">

  </bean>

  

</beans>

3.4 应用类:HelloAppSpring.java

package cuigh.spring.ioc.hello;

import org.springframework.beans.factory.BeanFactory;

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

import org.springframework.core.io.FileSystemResource;

import org.springframework.core.io.Resource;

@SuppressWarnings("deprecation")

public class HelloAppSpring {

public static void main(String[] args) throws Exception {

//使用步骤:1 构造一个Resource对象,参数为配置文件,本例中为:hello.xml

String fileName = System.getProperty("user.dir")+"\\bin\\cuigh\\spring\\ioc\\hello\\"

+"hello.xml";

Resource resource = new FileSystemResource(fileName);

//使用步骤:2 获得 BeanFactory

    BeanFactory factory = new XmlBeanFactory(resource);

    

    //使用步骤:3 通过Beanfactory获得实现类的实例,本例中为cuigh.spring.ioc.hello.CHello

    //相当于:IHello hello = new cuigh.spring.ioc.hello.CHello();

    IHello hello = (IHello) factory.getBean("hello");

    

    //用步骤:4 调用业务方法,本例中为 sayHello("张三")

    hello.sayHello("张三");

  }

}

总结:

HelloAppSpring.java中依赖的类cuigh.spring.ioc.hello.CHello通过

SPRING注入。

原创粉丝点击