复习Spring(三)

依赖注入

        依赖注入本质上和控制反转表示一个概念,当某个角色如Java实例,需要另一个角色如另一个Java实例的协助时,在传统的程序设计中,通常由调用者来创建被调用者的实例。但Spring中,创建被调用者的工作不在由调用者完成,而是由IOC容器来完成,所以称之为控制反转,然后注入调用者,所以称作依赖注入。

        比如人和斧子的关系,原始社会里需要斧子的人只能自己去创造一把斧子;工厂出现后,斧子不再由需要斧子的人生产,而是在工厂里生产出来了,需要斧子的人找到工厂,购买斧子,不需要关心斧子的制造过程。到Spring就是按需分配,需要斧子的人不需要找到工厂,只需要发出一个需要斧子的指令,斧子就会出现在他面前,即依赖注入。

        IOC容器主要有两种注入,即构造器注入和Setter注入。

构造器注入

        构造器注入通过调用带参数的构造器来实现,每个参数代表着一个依赖。

public class Chinese implements Person{
	private Axe axe;
	public Chinese(){
		super();
	}
	public Chinese(Axe axe){
		super();
		this.axe = axe;
	}
	@Override
	public void useAxe{
		System.out.println(axe.chop());
	}
}

        该代码中,调用者Chinese不用创建Axe实例,使用一个构造器准备接收Axe实例。

        使用配置文件描述依赖关系:

<bean id="stoneAxe" class="org.be.spring.ch01.di.StoneAxe"></bean>
<bean id="steelAxe" class="org.be.spring.ch01.di.SteelAxe"></bean>
<bean id="chiness" class="org.bd.spring.ch01.di.Chinese">
	<constructor-arg index="0" ref="stoneAxe"></constructor-arg>
</bean>

        第三行定义了之前的调用者,第四行采用构造器注入的方式将标识为stoneAxe的bean实例注入给标识为Chinese调用者实例。constructor-arg代表一个构造参数,index代表参数的位置。ref指定被注入bean的id。

Setter注入

        不同:构造器是在实例化对象时将主对象依赖的对象作为参数传递给构造器。而Setter注入是在实例化完成之后调用Setter方法,要求主对象有无参构造器,且提供对用的Setter方法。

<bean id="chiness" class="org.bd.spring.ch01.di.Chinese">
	<property name="axe" ref="stoneAxe"></property>
</bean>

        使用id为stoneAxe的bean给Chinese实例的axe属性赋值。


        依赖注入不仅仅支持将一个bean实例注入到另一个bean实例,换可以将基本数据类型、String类型、集合等类型注入到调用者bean实例中。代码就不贴了,无非是property中属性是name和value。

        自动装配不说了。





### Spring框架核心要点复习 Spring框架由Rod Johnson于2003年开发,目标是简化企业级Java应用程序开发,提供轻量级开发模型,解决了J2EE开发的一系列问题,使得企业级应用更易于开发、测试和维护[^1]。 - **核心概念** - **IoC(控制反转)与DI(依赖注入)**:IoC是一种设计理念,将对象的创建和依赖关系的维护从代码中解耦,交给Spring容器管理;DI是实现IoC的具体方式,通过构造函数、Setter方法等将依赖对象注入到目标对象中。例如,Spring工厂用于生成bean,把所有对象创建和依赖关系维护交给Spring管理,实现高内聚低耦合,方便解耦和简化开发[^1][^2]。 - **AOP(面向切面编程)**:Spring引入AOP支持,允许将横切关注点(如日志记录、权限验证等)从主要业务逻辑中分离出来,使代码更加规范。可以方便地实现对程序进行权限拦截、运行监控等功能[^1][^2]。 - **声明式事务**:只需要通过配置就可以完成对事务的管理,而无需手动编程,提高了开发效率和代码的可维护性[^2]。 - **开发模式** - **配置文件开发**:创建Spring配置文件(一般建议放到src目录下,名称可写成applicationContext.xml),并引入schema约束。示例配置文件内容如下: ```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 http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans> ``` - **纯注解开发**:Spring 3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道。例如可以使用注解来配置bean,无需在配置文件中对包进行扫描等操作[^3]。 - **优点及其他特性** - **方便程序测试**:Spring对Junit4支持,可以通过注解方便地测试Spring程序[^2]。 - **集成优秀框架**:方便集成各种优秀框架,例如对Struts、Hibernate、MyBatis、Quartz等的直接支持,降低JavaEE API的使用难度[^2]。 - **简化数据访问**:Spring提供了JDBC模板和ORM集成,简化了数据访问层的开发[^1]。 ### 复习方法 - **搭建简单项目**:快速搭建一个基于Spring框架的简单Java项目,分别使用配置文件和纯注解的方式实现IoC、AOP和声明式事务等功能,通过实践加深对知识点的理解和记忆。 - **制作思维导图**:将Spring框架的核心概念、开发模式、优点等内容制作成思维导图,梳理知识体系,便于整体把握和快速回顾。 - **刷题巩固**:找一些Spring框架相关的面试题和练习题进行练习,检验自己对知识点的掌握程度,针对薄弱环节进行重点复习
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值