在spring中如何配置和使用一个Bean

2014-11-24 08:54:13 · 作者: · 浏览: 0

在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。

spring推荐面向接口编程
1
package cn.nevo.service;
2

3
public interface HelloService {
4
public void sayHello();
5
}
01
package cn.nevo.service.impl;
02

03
import cn.nevo.service.HelloService;
04

05
public class HelloServiceImpl implements HelloService {
06
private String message;
07

08
//当用set注入时,一个空的构造方法是必须的
09
public HelloServiceImpl() {}
10
public HelloServiceImpl(String message) {
11
this.message = message;
12
}
13

14
public void setMessage(String message) {
15
this.message = message;
16
}
17

18
@Override
19
public void sayHello() {
20
System.out.println("hello " + message);
21
}
22
}
spring配置文件bean.xml(在这里决定如何配置bean及多个bean之间的依赖关系)
01
< xml version="1.0" encoding="UTF-8" >
02
03
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04
xsi:schemaLocation="http://www.springframework.org/schema/beans
05
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
06

07

08

10

11
world!
12

13

14

21

22

23

通常我们会看到拆分的元数据配置文件,这种做法是值得推荐的,它使得各个模块之间的开发分工更明确,互不影响,如:






测试类HelloServiceTest.java

01
package cn.nevo.service;
02

03
import org.junit.Test;
04
import org.springframework.context.ApplicationContext;
05
import org.springframework.context.support.ClassPathXmlApplicationContext;
06

07
import cn.nevo.service.impl.HelloServiceImpl;
08

09

10
public class HelloServiceTest {
11
@Test
12
public void testHelloService() {
13
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
14
HelloService hs = (HelloServiceImpl)ctx.getBean("helloService");
15
hs.sayHello();
16
}
17
}

Spring IoC容器通过读取spring配置文件实例化,如下面的例子:

ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "daos.xml"});// an ApplicationContext is also a BeanFactory (via inheritance)
BeanFactory factory = context;www.2cto.com

org.springframework.beans.factory.BeanFactory 是Spring IoC容器的实际代表者,IoC容器负责容纳此前所描述的bean,并对bean进行管理。在Spring中,BeanFactory是IoC容器的核心接口。 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。Spring为我们提供了许多易用的BeanFactory实现。

org.springframework.context包的核心是ApplicationContext接口。它由BeanFactory接口派生而来,因而提供了BeanFactory所有的功能。并且提供了一些更加通用的实现。BeanFactory就是spring容器,负责如何创建,配置和管理我们的Bean,采用工厂模式实现Ioc,将系统配置和依赖关系从具体业务代码中独立出来。

Spring IoC容器将读取配置元数据,并通过它对应用中各个对象进行实例化、配置以及组装。

Beanfactory接口结构图:

QQ截图20120724145213
本示例项目结构图:

QQ截图20120724141915
作者:Nevo