一、简介
org.springframework.beans及org.springframework.context包 是Spring IoC容器
的基础。BeanFacotry提供的高级配置机制,使得管理各种对象成为可能,ApplicationContext是BeanFactory的扩展,因而BeanFactory所具备的能力和行为也适用于ApplicationContext,并且功能得到了进一步增强,比如更易 与Spring AOP集成、资源处理(国际化处理)、事件传递及各种不同应用层的context实现。
总之,BeanFactory提供了配制框架及基本功能,而 ApplicationContext 则增加了更多支持企业核心内容的功能。
二、 容器和bean
在Spring中,那些组成你应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象(pojo)没有什么区别了。
1、容器
BeanFactory 是Spring IoC容器的实际代表者,IoC容器负责容纳所描述的bean,并对bean进行管理。
在Spring中,BeanFactory是IoC容器的核心接口。 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
1.1、实例化bean
bean定义描述如何创建一个或多个对象实例。容器从bean定义列表中取得一个指定的bean定义,并根据bean定义里面的配置元数据,使用反射机制来创建实际对象。bean的实例化的定义方式如下:
//用构造器来实例化
<bean id="exampleBean" class="examples.ExampleBean"/>
//使用静态工厂方法实例化
<bean id="exampleBean"
class="examples.ExampleBean2"
factory-method="createInstance"/>
//使用实例工厂方法实例化
<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="exampleBean"
factory-bean="serviceLocator"
factory-method="createInstance"/>
1.2、实例化容器
spring团队倾向于把xml配置文件拆成多个部分的做法。通过将xml配置文件的路径作为参数传给ApplicationContext构造器,生成一个ApplicationContext实例,即实例了BeanFactory,BeanFacotry从多个配置文件读取bean定义。
ApplicationContext加载xml文件写法可以这样:
//1 第一种方法,使用数组
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "daos.xml"});
//2 使用通配符
ApplicationContext contex=new ClassPathXmlApplicationContext("s*.xml");
//3 使用组合的方式
ApplicationContext contex=new ClassPathXmlApplicationContext("services.xml");
在services.xml中
<import resource="daos.xml"/> 执行resource路径为相对daos.xml的路径
其他加截xml配置文件实例化IOC容器的方法有:
//applicationContext.xml放在工程目录下,也可以写成绝对路径
Resource resource = new FileSystemResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
//位于src目录下
ClassPathResource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
//位于src目录下
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml", "applicationContext2.xml"});
BeanFactory factory = (BeanFactory) context;
三、使用容器
BeanFactory factory = context;
获得BeanFactory容器后,接着使用getBean(String)就可以取得bean实例。
四、简单的例子(基于IOC的bean注入,将bean注入到执行类Test里)
首先创建一个对象HelloWorld(bean)
public class HelloWorld {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
然后修改spring配置文件applicationContext.xml,在配置文件中实例化bean
<bean id="helloBean" class="com.spring.demo.HelloWorld">
<property name="msg" value="Hello World!"/>
</bean>
再创建一个将要把bean注入进的类Test
public static void main(String[] args){
//读取配置文件,获得BeanFactory
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
BeanFactory factory = context;
HelloWorld hello = (HelloWorld)factory.getBean("helloBean");
System.out.println(hello.getMsg());
}
通过Bean上下文工具获取Bean对象并注入给Test,然后输出其中的属性.
分享到:
相关推荐
Spring Ioc容器是整个Spring框架的基石,它负责创建、配置和管理对象。容器通过读取XML、Java注解或Java配置类等方式,获取对象的定义信息,然后根据这些信息实例化对象并进行依赖注入。 **三、依赖注入(DI,...
以下是Spring IOC容器的主要知识点: 1. **Bean的定义**:在Spring中,业务对象被称为Bean。Bean定义包含了创建和管理Bean的所有信息,如类名、属性值、依赖关系等,通常通过XML、注解或Java配置来定义。 2. **...
首先,我们需要理解IoC容器的基本工作原理。IoC容器是通过扫描应用程序上下文来发现所有需要管理的bean,并根据bean定义来创建和初始化这些bean。在Spring中,bean可以通过XML配置、Java配置或者注解进行定义。在...
在本篇中,我们将深入探讨Spring的IoC容器的工作原理、主要功能以及如何使用。 ### 1. IoC容器的概念 IoC,即控制反转,是一种设计模式,它的核心思想是将对象的创建和管理权交给外部容器,而不是由对象自己控制。...
### Spring_IOC详解:深入探索Spring框架的IOC容器原理 #### 引言 Spring框架作为Java企业级应用开发的基石,其核心组件之一便是IOC(Inverse of Control)容器。IOC容器负责管理应用程序中的对象及其依赖关系,...
### Spring IoC容器的核心概念与应用 #### 一、IoC基本定义 IoC(Inversion of Control,控制反转)是一种设计思想,在Spring框架中主要体现在这样一种方式:原本在程序代码中由开发者自己控制的对象的创建过程以及...
在这个项目中,“基于java简单模拟实现spring_ioc”显然是为了帮助开发者理解Spring的IoC容器是如何工作的,以及如何通过Java代码来模拟这个过程。 首先,让我们了解什么是Spring的IoC。IoC是一种设计模式,它将...
### Spring IOC容器实现分析 ...通过以上介绍,我们可以了解到Spring IOC容器的核心组件及其工作原理。在实际开发中,理解这些概念对于高效利用Spring框架至关重要。希望本文能够为您的学习之旅带来帮助。
在标签“源码”中,暗示了这篇博文可能深入到Spring的源码层面,分析IoC容器的工作原理。理解源码有助于我们更好地优化应用性能,解决复杂问题,甚至为社区贡献代码。 至于“工具”标签,可能意味着博主分享了如何...
"基本照着敲"表明这是一个跟随教程操作的实践过程,旨在帮助初学者理解IOC容器的工作原理。通过注解实现依赖注入,意味着类的依赖关系不是在代码中硬编码,而是通过元数据(如Java注解)来定义,这样可以提高代码的...
模拟Spring的IoC,我们可以创建一个简单的容器类,其中包含一个Map来存储bean。然后使用注解处理器扫描带有特定注解(如`@Component`)的类,并将它们注册到容器中。当需要注入依赖时,容器可以解析注解并自动装配。...
- **事务管理**:Spring的声明式事务管理基于IoC容器,可以轻松地在多个操作间协调事务。 - **Web应用**:在Spring MVC中,Controller层的bean通过IoC容器管理,方便进行依赖注入和AOP增强。 总之,Spring IoC...
在实际应用中,Spring的IoC容器可以自动扫描指定包下的类,寻找带有特定注解(如`@Component`、`@Service`、`@Repository`、`@Controller`)的类,然后自动创建Bean实例并管理它们。同时,通过`@Autowired`注解,...
本文将深入探讨一个简单的IOC容器实现,帮助我们理解DI的基本原理。 首先,理解IOC的概念至关重要。在传统的编程模式中,对象通常自行创建依赖的对象,这导致了代码之间的紧密耦合。而在IOC模式下,容器负责管理...
Spring的IOC容器还提供了许多高级特性,如AOP(面向切面编程)用于实现跨切面的关注点,如日志记录、事务管理等;Bean的作用域,如单例(singleton)、原型(prototype)等;以及事件驱动模型,允许bean之间进行通信...
Spring IOC(Inversion of ...了解这些基本原理后,开发者可以更有效地利用Spring框架,减少代码的复杂性,提高软件的可维护性和扩展性。在实际项目中,还可以结合注解配置和自动装配进一步简化配置,提升开发效率。
标签 "源码" 暗示我们将深入 Spring 框架的内部,了解 IOC 容器的工作原理。Spring 源码是用 Java 编写的,遵循模块化的架构。当我们谈论源码时,可能会关注以下几个关键点: 1. `BeanDefinition`:每个 Bean 在...