Spring基本操作之IOC

先附上Spring的文档 所用的操作里面都有详细的介绍(点击查看)

Spring的两个重要特征

  • 控制反转

  • 面向切面

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。它的底层设计模式采用了工厂模式,所有的
Bean
都需要注册到Bean工厂中,将其初始化和生命周期的监控交由工厂实现管理。程序员只需要按照规定的格式进行Bean开发,然后利用XML文件进行bean
的定义和参数配置,其他的动态生成和监控就不需要调用者完成,而是统一交给了平台进行管理。 [4] 控制反转是软件设计大师 Martin
Fowler在 2004 年发表的”Inversion of Control Containers and the Dependency
Injection
pattern”提出的。这篇文章系统阐述了控制反转的思想,提出了控制反转有依赖查找和依赖注入实现方式。控制反转意味着在系统开发过程中,设计的类将交由容器去控制,而不是在类的内部去控制,类与类之间的关系将交由容器处理,一个类在需要调用另一个类时,只要调用另一个类在容器中注册的名字就可以得到这个类的实例,与传统的编程方式有了很大的不同,“不用你找,我来提供给你”,这就是控制反转的含义
[ 。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
---------------------------------------------------------------------------------------------------------- 来自百度百科

Spring 的配置

<?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:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    
    <context:annotation-config/>
</beans>

DI依赖注入

示例

<bean class="com.feng.pojo.Friend" id="friend1">
       <property name="name" value="小李"/>
 </bean>

bean表示一个对象
class表示对象所在的位置
id 表示唯一的标识符
property 标识对象中的属性

构造器注入

使用字段 constructor-arg
在这里插入图片描述
可以看到共有5个参数可选

1.确定构造器中的形参 type name indx

  • type通过形参类型确定
  • name通过形参的名称确定
  • index 通过形参的位置来确定
    2.通过构造器为属性赋值
  • value直接赋值
  • ref 引用其他对象赋值

Set注入(重点)

  • 基本类型注入
 <bean class="com.feng.pojo.Friend" id="friend2">
        <property name="name" value="小王"/>
 </bean>

值的注入是通过value

  • 引用注入
 - <bean class="com.feng.pojo.Friend" id="friend1">
       <property name="friend" ref="friend2"/>
   </bean>

值的注入是通过ref, 值是其他对象

  • 集合类及properties文件注入
    使用property来指定要注入的属性 使用对应的标签 在标签中赋值 使用 value 或 ref
    看看官方文档给出的demo
<bean id="moreComplexObject" class="example.ComplexObject">
    <!-- results in a setAdminEmails(java.util.Properties) call -->
    <property name="adminEmails">
        <props>
            <prop key="administrator">administrator@example.org</prop>
            <prop key="support">support@example.org</prop>
            <prop key="development">development@example.org</prop>
        </props>
    </property>
    <!-- results in a setSomeList(java.util.List) call -->
    <property name="someList">
        <list>
            <value>a list element followed by a reference</value>
            <ref bean="myDataSource" />
        </list>
    </property>
    <!-- results in a setSomeMap(java.util.Map) call -->
    <property name="someMap">
        <map>
            <entry key="an entry" value="just some string"/>
            <entry key ="a ref" value-ref="myDataSource"/>
        </map>
    </property>
    <!-- results in a setSomeSet(java.util.Set) call -->
    <property name="someSet">
        <set>
            <value>just some string</value>
            <ref bean="myDataSource" />
        </set>
    </property>
</bean>

其他注入

p命名空间注入 和 c命名空间注入
p命名空间 用于set注入
c命名空间 用于构造器注入
使用时必须在xml中加上这两行约束

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"

示例

 <bean name="john-modern"
        class="com.example.Person"
        p:name="John Doe"
        p:spouse-ref="jane"/>
 <bean id="beanOne" class="x.y.ThingOne" c:thingTwo-ref="beanTwo"
        c:thingThree-ref="beanThree" c:email="something@somewhere.com"/>

Bean作用域

在这里插入图片描述
在这里插入图片描述

自动装配

可以通过xml配置 也可以通过注解配置 这里讲的是注解

spring的Autowired装配

在这里插入图片描述

java自带的注解

在这里插入图片描述

在这里插入图片描述

注解的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值