Spring 框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 框架相关的知识,希望对你有一定的参考价值。

1、Spring 框架介绍

1.1、什么是Spring

?Spring 是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,减少侵入;
?Spring 提供的 IOC 和 AOP 应用,可以将组件的耦合度降至最低,即解耦,便于系统日后的维护和升级;
?Spring 为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,关系也可以与第三方框架和技术整合应用,可以自由选择采用哪种技术进行开发。

为什么要用 Spring ?

?Spring 的本质是管理软件中的对象,如何 创建对象 和 维护对象之间的关系

1.2、Spring 的主要功能

技术分享图片

2、容器 和 bean 的管理技术分享图片

2.1、Spring 容器简介

?在 Spring 中,任何的 Java 类和 JavaBean 都被当成 Bean 处理,这些 Bean 通过容器管理和应用。
?Spring 容器实现了 Ioc 和 Aop 机制,这些机制可以简化 Bean 对象创建和 Bean 对象之间的解耦;
?Spring 容器有 BeanFactory 和 ApplicationContext 两种类型;

什么是 JavaBean : 一种简单规范的 JAVA 对象

何时使用 Spring ?

?当需要管理 JavaBean 对象时候就可以使用,Spring 是最简洁的对象管理方案之一。

2.2、Spring 容器实例化

 ApplicationContext 继承自 BeanFactory 接口,拥有更多的企业级方法,推荐使用该类型,实例化方法如下:
//加载文件系统中的配置文件实例化
String conf =" C:\ applicationContext.xml " ;
ApplicationContext ac = new FileSystemXmlApplicationContext( conf );
//加载工程 classpath 下的配置文件实例化
String conf = " applicationContext.xml ";
ApplicationContext ac = new ClassPathXmlApplicationContext( conf );

2.3、Spring 容器的使用

 从本质上讲,BeanFactory 和 ApplicationContext 仅仅只是一个维护 Bean 定义以及相互依赖关系的高级工厂接口。通过 BeanFactory 和 ApplicationContext 可以访问 bean定义。
 首先在容器配置文件 applicationContext.xml 中添加 Bean 定义
<bean id=" 标识符 " class=" 类型 " />
 然后在创建 BeanFactory 和 ApplicationContext 容器对象后,调用 getBean() 方法获取 Bean 的实例即可
getBean( " 标识符 " )

2.4、bean 的实例化

 Spring 容器创建 Bean 对象的方法有以下 3 种
1)用构造器来实例化
2)使用静态工厂方法实例化
3)使用实例工厂实例化

2.5、bean 的命名

 Bean 的名称
在 Spring 容器中,每个 Bean 都需要有名字(即标识符),该名字可以用 <bean> 元素的 id 或 name 属性指定
id 的属性比 name 严格,要求具有唯一性,不允许用 “ / ” 等特殊字符
  Bean 的别名
为已定义好的 Bean,再增加另外一个名字引用,可以使用 <alias> 指定
<alias name="fromName" alias= "toName" />

2.6、bean 的作用域

  Spring 容器在实例化 Bean 时,可以创建以下作用域的 Bean 对象
技术分享图片
以上的 Bean 作用域,可以通过 <bean> 定义的 scope 属性指定

2.7、bean 的生命周期回调

 指定初始化回调方法
<bean id="exampleBean" class="com.foo.ExampleBean" init-method="int">
</bean>
 指定销毁回调方法,仅适用于 singleton 模式的 Bean
<bean id="exampleBean" class ="com.foo.exampleBean" destory-method="destory" >
</bean>
提示:指定销毁回调方法,仅适用于 singleton 模式的 bean

2.8、bean 的延迟实例化

 在 ApplicationContext 实现的默认行为就是在启动时将所有 singleton bean 提前进行实例化
 如果不想让一个 singleton bean 在 ApplicationContext 初始化时被提前实例化,可以使用 <bean> 元素的 lazy-init="true" 属性改变
  一个延迟初始化 bean 将在第一次被用到时实例化
<bean id="exampleBean" lazy-init="true" class="com.foo.exampleBean" />
在顶级的 <beans/> 元素中的 default-lazy-init 属性,可以为容器所有<bean> 指定延迟实例化特性

2.9、指定 bean 的依赖关系

 当一个bean对另一个bean存在依赖关系时,可以利用<bean> 元素的 depends-on 属性指定
<bean id="beanOne" class="ExampleBean" depends-on="manager" />
<bean id="manager" class="ManagerBean" />
  当一个bean对多个bean存在依赖关系时,depends-on 属性可以指定多个bean名,用逗号隔开
<bean id="beanOne" class="ExampleBean" depends-on="manager1 , manager2" />

3、容器的 IOC 应用

3.1、IOC 概念

技术分享图片
技术分享图片

3.2、setter 注入

技术分享图片
技术分享图片

3.3、构造注入

技术分享图片
技术分享图片

3.4、自动装配

技术分享图片
技术分享图片

以上是关于Spring 框架的主要内容,如果未能解决你的问题,请参考以下文章

Spring框架--Spring事务管理和Spring事务传播行为

Spring框架--Spring事务管理和Spring事务传播行为

自己写的框架怎么融入到spring

spring框架优点

Spring浅析Spring框架的搭建

spring框架有啥用?