Spring IOC以及AOP相关概念

Spring是一个轻量级的控制反转(IOC/DI)和面向切面编程(AOP容器)的开源框架;

容器(container):从程序设计角度看就是装对象的对象,因为存在放入,拿出等操作,所以容器还管理着对象的生命周期,
例如:tomcat就是Servlet和Jsp的容器,它管理着servlet的生命周期

IOC:Inversion Of Control (控制反转),是一种设计思想
就是将原本在程序中手动创建对象的控制权,交由Spring框架来创建,管理,装配.

调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装,也就是把创建对象的控制权反转给Spring框架。
DI:Dependency Injection (依赖注入)从字面上分析:IOC:指将对象的创建权,反转给Spring容器;DI:指Spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过配置设值给该对象。
IOC从字面意思上很难体现出谁来维护对象之间的关系,Martin Fowler提出一个新的概念–DI,更明确描述了“被注入对象(Service对象)依赖IOC容器来配置依赖对象(DAO对象)。

Maven坐标:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.2.RELEASE</version>
</dependency>

ApplicationContext context = new ClassPathXmlApplicationContext(“application.xml”);

IOC创建对象的方式
1.使用无参构造创建对象,默认!

2.假设我们使用有参构造创建对象
假设ThingTwo和ThingThree类不是通过继承关联的,则不存在潜在的歧义。因此,以下配置可以正常工作,并且您无需在 元素中显式指定构造函数参数索引或类型。








构造函数参数类型匹配



构造函数参数索引



构造函数参数名称



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

起别名:

Bean的配置:



Import
Import一般用于团队开发使用,它可以将多个配置文件导入合并为一个,使用配置文件时直接使用总配置文件即可

依赖注入:
1.构造器注入
2.Set方式注入
依赖注入:
依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性,由容器来注入


赵云 关羽 张飞
<!--List-->
<property name="hobbys">
    <list>
        <value>游戏</value>
        <value>三国</value>
        <value>敲代码</value>
    </list>
</property>

<!--Map-->
<property name="card">
    <map>
        <entry key="身份证" value="1212244546"/>
        <entry key="银行卡" value="4211256688"/>
    </map>
</property>

<!--Set-->
<property name="games">
    <set>
        <value>Steam</value>
        <value>DNF</value>
        <value>三国志14</value>
    </set>
</property>

<!--null-->
<property name="wife">
    <null/>
</property>

<!--空串-->
<property name="girlFriends" value=""/>

<!--properties-->
<property name="info">
    <props>
        <prop key="user">root</prop>
        <prop key="password">123</prop>
    </props>
</property>
p命名空间注入: 首先要导入名称空间,加上下面这行: xmlns:p="http://www.springframework.org/schema/p"

c命名空间注入:
xmlns:c=“http://www.springframework.org/schema/c”

发布了19 篇原创文章 · 获赞 0 · 访问量 403

猜你喜欢

转载自blog.csdn.net/Lixiang1008/article/details/104680485