您的位置:首页 > 编程语言 > Java开发

[Spring实战系列](6)配置Spring IOC容器的Bean

2016-02-01 17:46 513 查看
1. 简介

Spring提供了一个强大的IOC容器来管理组成应用的bean。为了利用容器服务,必须配置运行于Spring IOC容器中的Bean。

2. 解决方案

你可以通过XML文件,属性文件,注释甚至API来设置Spring IOC容器中的Bean。

Spring允许你在一个或者多个bean配置文件中配置bean。对于简单的应用程序,可以在单个配置文件中集中配置bean。但是对于有许多bean的大型应用,你应该根据其功能将其分割到多个配置文件中。

3. 创建Spring配置

正如前面所讲的,Spring是一个基于容器的框架。如果没有配置Spring,那它就是一个空容器,对于我们也毫无用处。所以我们需要配置Spring 来告诉容器它需要加载哪些Bean和如何装配这些Bean,这样才能确保它们能够彼此协作。

从Spring 3.0 开始,Spring 容器提供了两种配置Bean 的方式。传统上,Spring 使用一个或多个XML 文件作为配置文件,而Spring 3.0 还同时提供了基于Java注解的配置方式。在这里我们首先使用传统的XML文件配置方式,后面我们会改用注解的配置方式。

在XML文件中声明Bean时,Spring 配置文件的根元素是来源于Spring beans 命名空间所定义的<beans> 元素。以下为一个典型的Spring XML 配置文件:

[code]<?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-3.0.xsd">
<!-- Bean declarations go here -->
</beans>


在<beans> 元素内,你可以放置所有的Spring 配置信息,包括<bean> 元素的声明。但是beans 命名空间并不是你遇到的唯一的Spring 命名空间。Spring的核心框架自带了10 个命名空间配置,如下表:

命名空间描述
AOP为声明切面以及将@AspectJ注解的类代理为Spring切面提供了配置元素。
beans支持声明Bean和装配Bean,是Spring最核心也是最原始的命名空间。
context为配置Spring应用上下文提供了配置元素,包括自动检测和自动装配Bean,注入非Spring直接管理的对象。
jee提供了与Java EE API的集成,例如JNDI和EJB。
jms为声明消息驱动的POJO提供了配置元素。
lang支持配置由Groovy,JRuby或BeanShell等脚本实现的Bean。
mvc启用Spring MVC的能力,例如面向切面注解的控制器,试图控制器和拦截器。
oxm支持Spring的对象到XML映射配置。
tx提供声明式事务配置。
util提供各种各样的工具类元素,包括把集成配置为Bean,支持属性占位符元素。
在这里我们主要学习的是为bean配置,其他有机会在学习。

4. 声明Bean

[code]package com.sjf.bean;
/**
* 学生实体类
* @author sjf0115
*
*/
public class Student {
private String name;
private int age;
private boolean sex;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(boolean sex) {
this.sex = sex;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("name:" + name + "\n");
builder.append("age:" + age + "\n");
builder.append("sex:" + (sex ? "boy" : "girl")  + "\n");
return builder.toString();
}
}


正如你所看,我们实现了一个学生实体类Student,为其提供了姓名,年龄和性别属性。我们可以通过set方法为其属性设置值。既然定义了Student类,那就有请我们第一位学生Yoona。Yoona被定义为一个Spring Bean,并在配置文件(applicationContext.xml)中进行声明:

[code]<?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.xsd">
<bean id = "yoona" class = "com.sjf.bean.Student">
<property name="name" value="yoona"/>
<property name="age" value="24"/>
<property name="sex" value="true"/>
</bean>
</beans>


<bean> 元素是Spring 中最基本的配置单元,通过该元素Spring 将创建一个对象。这里创建了一个由Spring 容器管理的名字为yoona 的Bean。这有可能是最简单的<bean> 配置方式。id 属性定义了Bean 的名字,也作为该Bean 在Spring 容器中的引用。这个Bean 被称为yoona。你还可以根据class 属性得知,yoona是一个Student。对于简单类型的每个bean属性,可以指定一个<value>元素。Spring会试图将你指定的值转换为该属性的声明类型。为了通过设置方法注入配置一个属性,可以使用<property>元素,并在其name特性中指定属性名称。每个<property>要求bean包含对应的一个设置方法。

为了打印Student的详细信息,可以使用如下代码加载Spring应用上下文:

[code]// 1.创建Spring IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 2. 从IOC容器中获取Bean实例
Student stu = (Student)context.getBean("yoona");
// 3.调用toString方法
System.out.println(stu.toString());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: