在千峰“逆战”学习的第23天

今天学习了spring框架的体系,BeanFactory和ApplicationContext的区别,Bean的声明周期、依赖注入DI,以及构造器注入、set方法注入、集合注入的讲解。
继续加油!奥利给!
人生重要的不是所站的位置,而是所朝的方向
中国加油!武汉加油!千锋加油!我自己加油

01_Spring概述

Spring是什么?
	Spring是分层的 Java SE/EE应用轻量级开源框架,以 IoC(Inverse Of Control:反转控 制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核

	提供了视图层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企 业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 JavaEE企业应用开源框架
	
Spring的优势
	方便解耦,简化开发 
	AOP 编程的支持 
	声明式事务的支持 
	方便程序的测试

02_Spring资源包说明

下载地址: 
http://maven.springframework.org/release/org/springframework/spring/

核心jar(4个),日志包(1个)
spring‐beans‐5.1.8.RELEASE.jar  
spring‐context‐5.1.8.RELEASE.jar  
spring‐core‐5.1.8.RELEASE.jar  spring‐expression‐5.1.8.RELEASE.jar  
spring‐jcl‐5.1.8.RELEASE.jar 

03_使用 spring 的 IOC 解决程序耦合4

控制反转IoC(Inversion of Control) 
控制:控制的双方是什么?谁控制谁? 
主控方:Spring
被控方:应用程序所使用的资源 
(原始)应用程序直接控制需要的外部资源 
(Spring)Spring控制所需要的外部资源 

反转:什么是反转?反转什么? 
正向:应用程序直接调用资源 
反向:应用程序依赖Spring为其提供资源 
反转的是资源的控制权 
应用程序由主动调用资源,变为被动的等待Spring提供资源 

有什么好处? 
正向缺点:应用程序控制的资源分布在程序的每一个地方 
反向的优点:所有的资源都在Spring中,便于管理,降低了耦合度。

总结: Spring反向控制应用程序所需要使用的外部资源。资源受Spring管理,利用率最大化

04_ApplicationContext的三个实现类

ApplicationContext 接口的实现类
	ClassPathXmlApplicationContext: 它是从类的根路径下加载配置文件 推荐使用这种 						FileSystemXmlApplicationContext: 它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。 		AnnotationConfigApplicationContext: 当我们使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注 解。 

05_BeanFactory和ApplicationContext的区别

BeanFactory 才是Spring容器中的顶层接口。ApplicationContext 是它的子接口。 BeanFactory 和 ApplicationContext 的区别: 
	ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。 
	BeanFactory:什么使用什么时候创建对象

06_Spring创建对象

a.构造器初始化【重点】: Bean对应的类必须提供一个无参构造方法 

静态工厂初始化【了解】 提供一个工厂类,使用其中的静态方法获取对象
public class Bean01Factory {      
	public static Bean01 getBean(){         
    	return new Bean01();      
	}  
} 
<bean id="bean01" factory‐method="getBean" class="com.qzw.util.Bean01Factory"> </bean> 

实例工厂初始化【了解】 提供一个工厂类,使用其中的普通方法获取对象
public class Bean02Factory {      
	public Bean01 getBean(){          
		return new Bean01();      
	}  
} 
<bean id="bean01" factory‐method="getBean" factory‐bean="factory"></bean>  <bean id="factory" class="com.qzw.util.Bean02Factory"></bean>

07_Bean的生命周期

单例对象: scope="singleton" 
一个应用只有一个对象的实例。它的作用范围就是整个引用。 
生命周期: 
	对象出生:当应用加载,创建容器时,对象就被创建了。 
	对象活着:只要容器在,对象一直活着。 
	对象死亡:当应用卸载,销毁容器时,对象就被销毁了
	
多例对象: scope="prototype" 
每次访问对象时,都会重新创建对象实例。 
生命周期: 
	对象出生:当使用对象时,创建新的对象实例。 
	对象活着:只要对象在使用中,就一直活着。
	对象死亡:当对象长时间不用时,被 java 的垃圾回收器回收了。

08_依赖注入DI

依赖注入: Dependency Injection。 
	它是 Spring 框架核心 IOC 的具体实现。 
	在编写程序时,通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依 赖的情况 
	IOC 解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法,那这 种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了。简单的说,就是 框架把持久层对象传入业务层,而不用我们自己去获取

09_构造器注入

顾名思义,就是使用类中的构造函数,给成员变量(简单类型、javaBean)赋值。注意,赋值的操 作不是我们自己做的,而是通过配置的方式,让spring框架来为我们注入。

具体步骤如下: a.提供对应的构造方法 b.配置构造方法的参数

10_set方法注入

顾名思义,就是在类中提供需要注入成员的set方法给成员变量(简单类型、javaBean)赋值。注意,赋值的操作不是我们自己做的,而是通过配置的方式,让spring框架来为我们注入。 
具体步骤如下: 提供对应的set方法 配置set方法的参数

11_集合注入

顾名思义,就是给类中的集合成员传值,它用的也是set方法注入的方式,只不过变量的数据类 型都是集合。我们这里介绍注入数组, List,Set,Map

public class Bean01{      
	private String[] myStrs;      
	private List<String> myList;      
	private Set<String> mySet;      
	private Map<String,String> myMap;      
	private Properties myProps;           
//Setter方法  
} 
<bean id="bean01" class="com.qzw.bean.Bean01">      
	<property name="myStrs" >          
		<array>              
			<value>aaa</value>              
			<value>bbb</value>         
		</array>      
	</property>     
	<property name="myList">          
		<list>              
			<value>aaa</value>              
			<value>bbb</value>          
		</list>      
	</property>      
	<property name="mySet">          
		<list>              
			<value>aaa</value>              
			<value>bbb</value>          
		</list>      
	</property>      
	<property name="myMap">          
		<map>             
		<entry key="key1" value="value1" >
		</entry>          
		</map>      
	</property>  
</bean> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值