【Spring】Spring依赖注入IOC的设值注入setter

其实标题中如此高大上的名词,只是一个问题,关于在Spring的applicationContext.xml中的如下语句是什么意思?

<property name="aService" ref="aService"/>这类语句在SSH的配置中会大量存在,因为Spring所谓的核心机制就是Spring依赖注入IOC。下面举一个例子说明这个问题:

先贴上目录结构:

在Eclipse中新建一个Java工程,不是JavaWeb,在这个Java配置好Spring3.0.5,,这个在《【Spring】Spring3.0.5的下载、配置与Helloworld》(点击打开链接)已经说过了,这里不再赘述,然后先在src文件夹中新建一个applicationContext.xml,里面的内容如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi=""xmlns=""xsi:schemaLocation=""><!– 指明A.java中的aService类,来自service包下AService.java –><!– A.java中就无须AService aService=new AService();这条语句了 –><bean id="aJava" class="A"><property name="aService" ref="aService"/></bean><bean id="aService" class="service.AService"/></beans>然后src新建一个A.java,里面的内容的如下:

import service.*;public class A {private AService aService;public void setaService(AService aService) {this.aService = aService;}public void print() {System.out.println("A.java在是用AService的print()方法:" + aService.print());}}之后,在src中新建一个service包,在service里面新建一个AService.java,代码如下:

package service;public class AService {public String print() {return "呵呵";}}之后再于src包里面新建一个SpringTest.java,这个java将包含主函数,是程序的入口,里面的代码如下:

import org.springframework.context.*;import org.springframework.context.support.*;public class SpringTest {public static void main(String[] args) {//初始化SpringApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//为这个SpringTest.java注入A.java这个类,A a=applicationContext.getBean("aJava",A.class);//注入之后可以直接使用A这个类a.print();}}这样就可以运行了,运行结果如下:

那么,上面这个程序到底是在说明什么问题呢?就是在说,因为Spring依赖注入IOC的设值注入setter还有Spring自身的特性,以致于整个工程没有一个new语句,方便简单,符合架构设计的规范。因为其下有如下的传值的过程:

非常显然的是,这里当然可以用一句简简单单的System.out.println语句完成,即使要用类,也可以用import与static等语句。不过Spring在JavaWeb工程中,大量的Hibernate语句与数据库查询方法,Struts的Action方法,能够把将其管理起来。

假设上面的A.java是关于Struts2的Action的java文件,AService.JAVA是Hibernate的数据库业务类。那么,你可能不会觉得Spring是在呵呵了。

一个人的期望值越大,心理承受力就会越小,就越经受不住失败的打击,

【Spring】Spring依赖注入IOC的设值注入setter

相关文章:

你感兴趣的文章:

标签云: