Spring-IOC的学习

IOC(Inversion of Control)控制反转

1996年,Michael Mattson在一篇有关探讨面向对象框架的文章中,首先提出了IOC 这个概念。对于面向对象设计及编程的基本思想,前面我们已经讲了很多了,不再赘述,简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

IOC本质

控制反转,是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方。所谓控制反转:获得依赖对象的方式反转了

Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IOC容器中取出需要的对象。

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

使用Spring来创建对象,在Spring这些都称为Bean
类型 变量名 = new 类型();
Hello hello = new Hello();

<bean id = "hello" class="com.gwq.pojo.Hello">
    <property name="str" value="spring"/>
</bean>

此时id = 变量名
    class = new的对象
    property相当于给对象中的属性设置一个值!

IOC创建对象的方式

1、使用无参构造创建对象,默认!

2、假设我们要使用有参构造创建对象。

        1、下标赋值

<!-- 第一种,下标赋值! -->
<bean id = "user" class="com.gwq.pojo.User">
    <constructor-arg index="0" value="Java-Spring"/>
</bean>   

        2、类型

<!-- 第二种方式:通过类型创建,不建议使用! -->

<bean id="user" class="com.gwq.pojo.User">
    <constructor-arg type="java.lang.String" value="qj"/>
</bean>

        3、参数名

<!-- 第三种,直接通过参数名来设置 -->
<bean id="user" class="com.gwq.pojo.User">
    <constructor-arg name="name" value="qj"/>
</bean>

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了!

Spring配置

别名

<!-- 别名,如果添加了别名,我们也可以使用别名获取到这个对象 -->
<alias name="user" alias="userNew"/>

Bean的配置

<!--
id:bean是唯一标识符,也就是相当于我们学的对象名
class:bean对象所对应的全限定名:包名 + 类型
name:也是别名,而且name可以同时取多个别名
-->

<bean id="userT" class="com.kuang.pojo.UserT" name="user2 u2,u3,u4">
    <property name="name" value="kaiy"/>
</bean>

import

import一般用于团队开发使用,他可以将多个配置文件,导入合并为一个

假设,现在项目中有多个人开发,这三个人复制不同的类开发,不同的类需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的!

  • 张三
  • 李四
  • 王五
  • applicationContext.xml
<import resource="beans1.xml"/>
<import resource="beans2.xml"/>
<import resource="beans3.xml"/>

使用的时候,直接使用总的配置就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值