Spring入门

  • 导入jar包(4个)
  • 在classpath(src)目录下创建核心配置文件(spring.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的Bean实例
<!‐‐ 所有资源以Bean的形式存在 ‐‐> 
<!‐‐ bean:声明一个资源Bean ‐‐> 
<!‐‐ bean:id:用于区分bean的标识 ‐‐> 
<!‐‐ bean:class:bean对应的模型类名 ‐‐> 
<bean id="user" class="cn.qzw.bean.User">
</bean> 
  • 测试
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 
Object user = ctx.getBean("user");

使用 spring 的 IOC 解决程序耦合

控制反转IoC(Inversion of Control)
控制:控制的双方是什么?谁控制谁?

  • 主控方:Spring
    1.被控方:应用程序所使用的资源
    2.(原始)应用程序直接控制需要的外部资源
    3.(Spring)Spring控制所需要的外部资源

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

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

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

ApplicationContext的三个实现类

ApplicationContext 接口的实现类

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

代码测试

  • ClassPathXmlApplicationContext源码下
ClassPathXmlApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
  • FileSystemXmlApplicationContext
FileSystemXmlApplicationContext application = new FileSystemXmlApplicationContext("A:\\workspace\\idea\\spring\\src\\applicationCo ntext.xml");

BeanFactory和ApplicationContext的区别

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

代码测试

BeanFactory application = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); 
IUserService userService = (IUserService) application.getBean("userService")

Spring创建对象

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>
取值范围说明
singleton默认值,单例的
prototype多例的
requestWEB项目中,Spring创建一个Bean的对象,将对象存入到reques t域中
sessionWEB项目中,Spring创建一个Bean的对象,将对象存入到session 域中
global sessionWEB项目中,在Portlet环境,如果没有Portlet环境,相当于sessio n

更改作用域的方法

//scope属性:singleton:单例 ;prototype:非单例 
<bean id=”beanId” class=”BeanClassName” scope=”prototype”></bean>

Bean的生命周期

单例对象: scope="singleton"
一个应用只有一个对象的实例。它的作用范围就是整个引用。

  • 生命周期:
    对象出生:当应用加载,创建容器时,对象就被创建了。
    对象活着:只要容器在,对象一直活着。
    对象死亡:当应用卸载,销毁容器时,对象就被销毁了。

多例对象: scope="prototype"
每次访问对象时,都会重新创建对象实例。

  • 生命周期:
    对象出生:当使用对象时,创建新的对象实例。
    对象活着:只要对象在使用中,就一直活着。
    对象死亡:当对象长时间不用时,被 java 的垃圾回收器回收了。
  • 监听init-method:
    初始化回调方法名,配置的方法必须由bean对象提供
  • destroy-method:
    销毁回调方法名,配置的方法必须由bean对象提供
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值