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事务传播行为