Spring框架入门:IOC容器与@Component注解解析

需积分: 0 0 下载量 144 浏览量 更新于2024-08-05 收藏 5.32MB PDF 举报
"spring02.pdf" 这篇文档主要介绍了Spring框架中的两个核心概念:依赖注入(Dependency Injection,DI)和组件扫描(Component Scanning),这些都是Spring2中的关键特性。 1. 依赖注入(Dependency Injection,DI) 依赖注入是Spring框架的核心,它允许我们解耦组件间的依赖关系,使得代码更加灵活、可测试和易于维护。在Spring中,DI通过容器管理对象的生命周期和依赖关系。有三种主要的DI方式: - XML配置:这是Spring早期版本中常见的DI方式,通过在XML文件中定义bean及其依赖。例如,`<bean id="student" class="com.soft.service.Student">`定义了一个名为"student"的bean,它的类是`Student`。 - 注解驱动的配置:使用Java注解如`@Component`,`@Service`,`@Repository`和`@Controller`来标记组件类,这样Spring容器就能识别并管理这些类。例如,`@Component("student")`声明了一个名为"student"的组件。 - 基于Java的配置:使用`@Configuration`和`@Bean`注解在Java类中定义bean及其依赖,这种方法提供了更强大的类型安全性和代码的可读性。 2. 组件扫描(Component Scanning) `component-scan`元素用于自动发现应用上下文中的组件。在XML配置中,`<context:component-scan base-package="com.soft.service"></context:component-scan>`这行代码告诉Spring容器去`com.soft.service`包及其子包下寻找标记了Spring注解的类,如`@Component`,`@Service`,`@Repository`和`@Controller`,然后将这些类实例化为bean。 3. @Component、@Service、@Repository和@Controller - `@Component`是最基础的注解,可以标记任何通用的业务组件。Spring会默认将这些组件放入bean定义中。 - `@Service`通常用于业务逻辑层,它是对`@Component`的一个细化,提供了一种默认的范围。 - `@Repository`用于数据访问层,用于标记DAO(数据访问对象)类,它提供了异常转换功能。 - `@Controller`用于表示Web层的控制器,处理HTTP请求。 4. 属性注入(Property Injection) 在Spring中,除了通过构造函数注入依赖外,还可以使用`@Value`注解来注入属性值,例如`@Value("${property.name}")`可以从属性文件中读取值并注入到字段或方法参数中。 5. 使用注解实现DI 通过使用`@Autowired`注解,Spring容器可以自动地将匹配的依赖注入到bean的属性或构造函数中,无需显式地指定bean的ID。例如: ```java @Autowired private Student student; ``` 这行代码会让Spring自动找到合适的`Student`类型的bean并注入。 总结来说,Spring框架的依赖注入和组件扫描机制极大地简化了Java应用的开发,通过XML、注解或Java配置,我们可以轻松地管理对象的生命周期和它们之间的依赖关系,从而实现松散耦合。在实际开发中,这些概念和实践是理解和使用Spring框架的基础。