Spring学习笔记-第一章-SpringIOC

Spring是应用了很多优秀的设计模式,对于项目的实现提供了优秀的解决方法,Spring是一个轻量级(低侵入(MVC和逻辑代码框架). 类与类的解耦合

目的:解决企业应用开发的复杂性
功能:使用了基本的JavaBean代替了EJB,并提供了更多的企业应用功能
范围:任何Java应用

在这里插入图片描述
IOC:控制反转(DI:依赖注入)
不在使用传统的创建对象的方法,而是将创建对象的控制权交由spring容器(配置文件)中来声明和实现。
IOC的事项原理:工厂设计模式-----反射(无参构造方法) 配置文件+工厂类
1.读取bean的XML配置文件
2.使用beanId查找bean配置,并获取配置文件中class地址。
3.使用Java反射技术实例化对象
4.获取属性配置,使用反射技术进行赋值。

IOC的好处:解耦合

开发Spring至少需要使用的jar包(5+1)
Spring-aop.jar 开发aop特效时需要的jar
Spring-beans.jar 处理Bean的jar
Spring-context.jar 处理spring上下文的jar
Sping-core.jar 核心jar
Spring-expression.jar spring表达式
Commons-logging.jar 第三方提供的日志jar

Spring主配置文件中:bean标签表示一个对象
id是一个对象的唯一表示
class是类的全路径
1.设值注入

<bean id="product" class="com.gxy.entity.Product">
		<property name="proId" value="1"></property>
		<property name="proName" value="华为"></property>
		<property name="proBrief" value="国产手机"></property>
		<property name="proPrice" value="6999.99"></property>
		<!-- <property name="phone" ref="phone"></property> -->
	</bean>

ref 引用其它对象

<bean id="product" class="com.gxy.entity.Product" >
		<property name="proId" value="1"></property>
		<property name="proName" value="华为"></property>
		<property name="proBrief" value="国产手机"></property>
		<property name="proPrice" value="6999.99"></property>
		<property name="phone" ref="phone"></property>
	</bean>
<bean id="phone" class="com.gxy.entity.Phone">
		<property name="phoName" value="realme"></property>
	</bean>

2.构造注入

<bean id="product2" class="com.gxy.entity.Product">
		<constructor-arg>
			<value>2</value>
		</constructor-arg>
		<constructor-arg>
			<value>小米</value>
		</constructor-arg>
		<constructor-arg>
			<value>手机</value>
		</constructor-arg>
		<constructor-arg>
			<value>2999.99</value>
		</constructor-arg>
	</bean>

3.自动装配
限制:不能自动装配所谓的简单类型包括基本类型,字符串和集合类
通常用来自动装配 对象
a.标注autowire=”byName”,表示通过名称来自动装配
扫描当前类下,所有 对象 的 属性值,然后通过这个属性值来spring容器(配置文件)中找有没有对应的bean-id
如果找到,则自动装配该对象;如果找不到,则报错

<bean id="product" class="com.gxy.entity.Product" autowire="byName">
		<property name="proId" value="1"></property>
		<property name="proName" value="华为"></property>
		<property name="proBrief" value="国产手机"></property>
		<property name="proPrice" value="6999.99"></property>
	</bean>
<bean id="phone" class="com.gxy.entity.Phone">
		<property name="phoName" value="realme"></property>
	</bean>

b.标注autowire=”byType”,表示通过类型来自动装配
扫描当前类下,所有的 对象 的 类型,然后通过类型来spring容器(配置文件)中找有没有对应的类型
如果找到,则自动装配该对象;否则,则报错

<bean id="product" class="com.gxy.entity.Product" autowire="byName">
		<property name="proId" value="1"></property>
		<property name="proName" value="华为"></property>
		<property name="proBrief" value="国产手机"></property>
		<property name="proPrice" value="6999.99"></property>
	</bean>
	<bean class="com.gxy.entity.Phone">
		<property name="phoName" value="realme"></property>
	</bean>

Spring DI 依赖注入方式对比
 DI 依赖注入方式对比
依赖注入没有优劣之分,只有根据场景是否最适用的区别

Spring个人比喻(若不恰当请见谅)
我觉得Spring相当于家政公司,如果家里非常凌乱自己打扫整理非常需要耗费时间,效率也有限。IOC就像把家里的整理权交给了家政公司,DI就是整理方式,无论是使用人工还是机器,在不损坏雇主的物品是都可以使用,相当于通过第三方来达成目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值