Spring框架学习笔记

一.Spring 框架简介

Spring框架宗旨

不重新发明技术,让原有技术使用起来更加方便.

核心功能
IoC/DI 控制反转/依赖注入
AOP 面向切面编程
声明式事务

Ioc

  1. 中文名称:控制反转
  2. 英文名称:(Inversion of Control)
  3. IoC 是什么?

3.1 IoC 完成的事情原先由程序员主动通过 new 实例化对象事情,
转交给 Spring 负责.
3.2 控制反转中控制指的是:控制类的对象.
3.3 控制反转中反转指的是转交给 Spring 负责.
3.4 IoC 最大的作用:解耦。 程序员不需要管理对象.解除了对象管理和程序员之间
的耦合

Spring环境搭建

  1. 导入jar

commons-logging-xxx.jar
spring-beans-x.x.x.RELEASE
spring-context-x.x.x.RELEASE
spring-core-x.x.x.REALEASE
spring-expression-x.x.x.RELEASE

  1. 在 src 下新建 applicationContext.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/sc
hema/beans
http://www.springframework.org/schema/beans/spring-be
ans.xsd">
<!-- id 表示获取到对象标识 class 创建哪个类的对象-->
<bean id="peo" class="pojo.People"/>
</beans>
  1. 测试
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xm
l");
People people = ac.getBean("peo",People.class);
System.out.println(people);

Spring创建对象的三种方式

通过构造方法创建
无参构造
有参构造
  • index : 参数的索引,从 0 开始
  • name: 参数名
  • type:类型(区分开关键字和封装类 int 和 Integer)
<bean id="peo" class="pojo.People">
<!-- ref 引用另一个 bean value 基本数据类型或
String 等 -->
    <constructor-arg index="0" name="id" type="int"
value="123">
    </constructor-arg>
    <constructor-arg index="1" name="name" type="java.lang.String" value="aa">
    </constructor-arg>
</bean>
实例工厂

实力工厂类

public class PeopleFactory {
    public People newInstance(){
        return new People(1,"测试");
    }
}

applicationContext.xml

<bean id="factory" class="pojo.PeopleFactory"></bean>
<bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>
静态工厂

不需要创建工厂,快速创建对象

public class PeopleFactory {
    public static People newInstance(){
        return new People(1,"测试");
    }
}

在 applicationContext.xml 中

<bean id="peo2" class="pojo.PeopleFactory" factory-method="newInstance"></bean>

如何给 Bean 的属性赋值(注入)

通过构造方法
设置注入(通过set方法)
基本数据类型
<bean id="peo" class="pojo.People">
    <property name="id" value="222"></property>
    <property name="name" value="张三"></property>
</bean>

等效于

<bean id="peo" class="pojo.People">
    <property name="id">
        <value>456</value>
    </property>
    <property name="name">
        <value>zhangsan</value>
    </property>
</bean>
如果属性是 Set<?>或者List等一维存储空间
<property name="list">
    <list>
        <value>1</value>
        <value>2</value>
        <value>3</value>
    </list>
</property>
map类型
<property name="map">
    <map>
        <entry key="a" value="b" >
        </entry>
        <entry key="c" value="d" >
        </entry>
    </map>
</property>

DI

  • DI:中文名称:依赖注入
  • 英文名称((Dependency Injection)

DI 和 IoC 是一样的

当一个类(A)中需要依赖另一个类()对象时,把 B 赋值给 A 的过
程就叫做依赖注入.

代码体现

<bean id="peo" class="pojo.People">
    <property name="desk" ref="desk"></property>
</bean>
<bean id="desk" class="pojo.Desk">
    <property name="id" value="1"></property>
    <property name="price" value="12"></property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值