spring Ioc简单了解

本文详细介绍了Spring框架中的IoC容器概念及其核心接口BeanFactory。解释了控制反转(IoC)的意义,并探讨了三种依赖注入方式:set注入、接口注入和构造方法注入。此外,还对比了BeanFactory与ApplicationContext的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring太多了,主要讲讲开发中常用的吧,分2个部分,ioc,aop;分开来说,白话一点,写的比较乱,总结性文字偏多,具体还请查看spring源码。

1.ioc

IoC(Inversion of Control)控制反转,只能说是神器(把控制权从具体业务对象手中转交到平台或者框架中,说白了使整个项目结构更清晰,各司其职),对象创建责任的反转,在spring中BeanFacotory是IoC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。XmlBeanFacotory实现BeanFactory接口,通过获取xml配置文件数据,组成应用对象及对象间的依赖关系。

spring中有三种注入方式,一种是set注入,一种是接口注入,另一种是构造方法注入。

我们在使用的时候,主要讲dao层实例配置到bean.xml中、或扫描相关组件包,spring容器默认创建单例的bean,所以就不需要做单例处理了。

spring已经为我们实现了很多装bean的容器,只是容器的材质不同,BeanFactory、ApplicationContext比较常用。2者区别,说白了BeanFactory是ioc容器的基本实现形式,ApplicationContext则比较高级。


从一个简单的容器讲讲吧:XmlBeanFactory

 

 

    public class XmlBeanFactory extends DefaultListableBeanFactory {  
        private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);  
        public XmlBeanFactory(Resource resource) throws BeansException {  
            this(resource, null);  
        }  
        public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {  
            super(parentBeanFactory);  
            this.reader.loadBeanDefinitions(resource);  
        }  
    }  


注释中看出这是很老的一段代码,有兴趣的一定要好好研究一下代码

 

 

 

<think>好的,我现在需要帮助用户了解Java Spring框架中IoC简单实现方式。用户明确要求一个简单的示例,所以我得先回忆一下Spring IoC的基本概念和实现步骤。 首先,IoC(控制反转)是Spring的核心,通过容器来管理对象的创建和依赖注入。用户可能想看到一个从配置到获取对象的完整流程。根据用户提供的引用内容,特别是引用[3]中的代码示例,可以看出用户希望看到基于XML配置的方式,因为这是比较传统且直观的方法。 接下来,我需要确定示例的结构。通常,一个简单IoC示例需要以下几个步骤: 1. 创建Maven项目并添加Spring依赖。 2. 定义Bean类。 3. 编写XML配置文件(如bean.xml),配置Bean信息。 4. 在Java代码中加载配置文件,获取Spring容器,并从容器中获取Bean实例。 用户提供的引用[3]中有一个HelloBiz类,通过ClassPathXmlApplicationContext加载bean.xml,然后使用getBean方法获取实例。这可以作为参考,但可能需要更简化的版本,以便用户更容易理解。 需要注意的是,用户提到的引用[1]和引用[2]中提到了使用反射创建对象和传统的实例化方式,但SpringIoC是通过容器自动管理的,所以应该强调配置文件的作用和容器的使用。 此外,用户可能对XML配置的具体内容感兴趣,例如如何定义Bean的id和类路径。同时,可能需要解释ApplicationContext的作用,以及getBean方法的不同用法,比如通过id或类类型获取Bean。 为了确保示例正确,需要检查XML文件的路径是否正确,以及Bean的配置是否正确。比如,在引用[3]中,bean.xml应该位于类路径下,通常放在src/main/resources目录中。 最后,用户可能想知道如何验证IoC是否生效,比如调用Bean的方法并查看输出结果。因此,示例中应该包含调用方法的代码,并展示结果。 总结步骤: 1. 创建Bean类。 2. 配置bean.xml,定义Bean。 3. 使用ApplicationContext加载配置文件,获取Bean实例。 4. 调用方法验证。 现在需要将这些步骤用简洁的代码和说明呈现出来,确保用户能够一步步跟随实现。同时,可能需要在相关问题中引导用户深入了解其他方面,如依赖注入的方式、不同的配置方法(注解或Java配置)等。</think>### Java Spring IoC简单实现示例 以下是基于XML配置的Spring IoC实现步骤,通过控制反转由Spring容器管理对象生命周期: #### 1. 创建Bean类 ```java public class UserService { public void login(String username) { System.out.println(username + "登录成功"); } } ``` #### 2. 创建XML配置文件(bean.xml) ```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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置Bean定义 --> <bean id="userService" class="com.example.service.UserService"/> </beans> ``` #### 3. 通过容器获取Bean ```java public class MainApp { public static void main(String[] args) { // 创建Spring容器(XML方式) ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); // 通过Bean ID获取实例(推荐方式) UserService service1 = (UserService) context.getBean("userService"); service1.login("admin"); // 输出:admin登录成功 // 通过类型获取实例(需确保类型唯一) UserService service2 = context.getBean(UserService.class); service2.login("guest"); // 输出:guest登录成功 } } ``` #### 实现原理 1. **容器初始化**:通过`ClassPathXmlApplicationContext`解析XML配置文件[^1] 2. **Bean实例化**:根据`<bean>`配置使用反射创建对象(默认调用无参构造器)[^1] 3. **对象存储**:将Bean实例存储在Spring容器中(Map结构) 4. **依赖注入**:通过配置实现对象间关系管理(本例未展示依赖注入)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值