Spring IOC框架入门教程:定义与使用Bean

需积分: 10 3 下载量 41 浏览量 更新于2024-07-20 收藏 54KB DOCX 举报
“SpringIOC框架学习文档,通过一个简单的Bean声明示例进行讲解。” Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它允许开发者将对象的创建和管理交由Spring容器来处理,从而减少代码间的耦合。在Spring应用中,我们不再需要手动创建对象,而是定义配置元数据(通常是XML文件),让Spring根据这些元数据创建和管理Bean。 1. 声明一个简单的Bean 在示例中,首先定义了一个接口`Performer`,它代表了参与表演的角色。接着创建了一个实现`Performer`接口的`Juggler`类,表示杂技师这个角色,具备`perform()`方法进行表演。 ```java // Performer接口 public interface Performer { void perform() throws PerformanceException; } // Juggler类 public class Juggler implements Performer { private int beanBags = 3; public Juggler() {} public Juggler(int beanBags) { this.beanBags = beanBags; } public void perform() throws PerformanceException { System.out.println("JUGGLING " + beanBags + " BEANBAGS"); } } ``` 然后,在`spring-idol.xml`配置文件中,我们声明了一个名为`duke`的Bean,它对应于`Juggler`类: ```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-3.0.xsd"> <bean id="duke" class="com.moonlit.myspring.Juggler"/> </beans> ``` 这里,`id`属性定义了Bean的唯一标识,`class`属性指定了Bean的全限定类名。 2. 使用ApplicationContext获取Bean 测试代码中,我们使用`ApplicationContext`来获取由Spring容器管理的Bean: ```java // 测试代码 package com.moonlit.practice; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring-idol.xml"); Performer duke = (Performer) context.getBean("duke"); duke.perform(); } } ``` 这里,`ClassPathXmlApplicationContext`是Spring提供的一个用于加载XML配置文件的上下文实现,它会根据指定的XML文件初始化Bean。`getBean("duke")`方法根据Bean的ID获取对应的实例,并将其强制转换为`Performer`类型,最后调用`perform()`方法进行表演。 通过这种方式,Spring IOC实现了对对象生命周期的管理,包括创建、初始化、装配和销毁等过程,使得代码更加灵活和易于维护。此外,Spring还支持其他方式的Bean声明,如注解方式(@Component, @Service, @Repository等),以及Java配置类(@Configuration, @Bean等),提供了更丰富的功能和配置选项。