一.概述
在Spring中IOC是一个非常重要的概念,在平时写程序时经常会出现一个对象依赖另外一个对象的,其实这种依赖关系在程序中不是很重要,重要的是在使用依赖对象的时候依赖对象是正常的。Spring容器管理了这种依赖关系,保证了依赖的对象在使用的时候是正常的,加入A要依赖B,我们只要把这种依赖关用一种Spring中提供的方式表达出来,这时候Spring容器就能识别出这种依赖关系,同时会把B给注入到A,保证在A中使用B的时候,B是正常的,在Spring中提供了一种基于包扫描的注入方式,我们只需要用一些注解就可以轻松实现对象的注入。详见下面的代码。
二.代码实现
package ioc.component;
public interface IFXNewsPersister {
}
package ioc.component;
public interface IFXNewsListener {
}
package ioc.component;
import org.springframework.stereotype.Component;
@Component
public class DowJonesNewsListener implements IFXNewsListener {
}
package ioc.component;
import org.springframework.stereotype.Component;
@Component
public class DowJonesNewsPersister implements IFXNewsPersister {
}
package ioc.component;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("...component-bean.xml");
FXNewsProvider newsProvider = (FXNewsProvider)ctx.getBean("FXNewsProvider");
newsProvider.getNewsListener();
System.out.println(newsProvider.info());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 基于package包的扫描注入 -->
<context:component-scan base-package="ioc.component" />
</beans>
三.注意点
1.Autowire按照类型注入
2.Resource按照名字注入,如果找不到名字再按照类型注入,推荐使用@Reource(name="xx"),强制使用名字为xx的bean来注入,如果没有名字为xx的bean的话,注入就是失败的,但是要是遇见同类型的bean,也能注入,这样就会事与愿违。
3.要想被Spring容器扫描,就得现在xml文件中指定要扫描的包,同时也要在需要被扫描的类上面打上@Component标签,不打的话,不会被扫描到。
分享到:
相关推荐
Spring 自动扫描注入机制 Spring 框架为开发者提供了自动扫描注入机制,使得组件的管理变得更加简洁高效。在 Spring 2.5 中,引入了组件自动扫描机制,该机制可以在类路径下寻找标注了 @Component、@Service、@...
而自动扫描和自动注入是Spring 2.5中实现IOC的两个核心特性,极大地简化了配置工作,提高了开发效率。以下是对这两个特性的详细解释: **自动扫描**: 自动扫描是Spring框架的一个强大功能,它允许开发者指定一个或...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象间的依赖关系得以解耦,提高了代码的可测试性和可维护性。Spring提供了多种注入方式,包括set注入、构造注入和自动注入...
4. **错误的注解使用**:确保在需要注入的对象上使用了正确的注解,如`@Component`、`@Service`、`@Repository`或`@Controller`,并在Spring配置中启用组件扫描。 ```xml <context:component-scan base-package=...
在Spring框架中,包扫描(Package Scanning)是一项核心功能,它允许我们在应用程序上下文中自动检测和注册bean定义。这个过程极大地简化了依赖注入和组件配置。本项目以"spring包扫描配置"为主题,旨在通过一个简单...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式地在配置文件中声明每个Bean,而是让Spring容器自动发现并管理应用中的组件。这一特性极大地简化了Spring应用的配置,提高了开发效率。...
### 详解Spring 3.0基于Annotation的依赖注入实现 #### 概述 Spring框架作为一个广泛使用的Java开发框架,提供了强大的依赖注入(Dependency Injection, DI)能力,帮助开发者轻松管理和组织复杂的Java应用。随着...
在上述例子中,`Student`类中的`teacher`字段使用`@Autowired`注解,Spring会自动找到`Teacher`类型的Bean进行注入。 总之,Spring提供了多种方式来定义和管理Bean,从XML到注解再到Java配置,使得开发更加灵活高效...
<context:component-scan base-package="Mode"></context:component-scan> //表示在包mode下面的类将扫描带有@Component,@Controller,@Service,@Repository标识符的类并为之注入对象。 据说是因为XML配置太烦锁而...
在Java开发中,Spring框架以其强大的依赖注入(Dependency Injection,DI)和组件扫描能力而闻名。本文将探讨如何使用XML配置和注解(Annotation)来实现类似Spring的这些功能。我们将深入理解这两种方法,以及它们...
Struts、Hibernate和Spring是Java开发中非常流行的三大框架,它们各自在Web应用程序的不同层面上发挥作用:Struts处理MVC模式中的Controller部分,Hibernate负责数据持久化,而Spring则提供了全面的依赖注入...
Spring框架的核心特性之一是依赖注入(Dependency Injection,DI),它通过自动扫描容器中的bean定义,找到并管理bean实例。扫描机制允许开发者声明类为Spring管理的bean,无需在XML配置文件中手动注册。Spring通过...
在Spring框架中,动态扫描和注册JavaBean是一个重要的功能,它允许我们在运行时根据特定条件加载和管理Bean,而无需显式地在配置文件中声明它们。这种灵活性使得应用程序能够更加适应变化的需求和动态环境。 首先,...
在本文中,我们将深入探讨Spring如何通过注解实现自动匹配和注入依赖(Inversion of Control, IOC),以及它如何提升开发效率。首先,我们需要理解Spring中的几个关键注解,包括@Component、@Autowired、@Qualifier...
在测试类中,使用@ContextConfiguration注解加载Spring配置文件,然后通过@Autowired注入Service层的实例,进行单元测试。 通过以上步骤,我们就完成了Spring和MyBatis的整合,利用Mapper代理自动扫描的方式实现了...