1、什么是Spring
Spring是一个开元的轻量级的应用开发框架,其目的是用于简化企业级应用开发,减少侵入;
Spring提供的IOC和AOP应用,可以将组件的耦合度降至最低,即解耦,便于系统日后的维护和升级;
Spring为系统提供了一个整体的解决方案,开发者可以利用它本身的功能外,也可以与第三方框架和技术整合应用,可以自由选择采用哪种技术进行开发。
2、为什么要使用Spring?
Spring的本质是管理软件中的对象,如何创建对象和维护对象之间的关系
3、Spring容器介绍
在Spring容器中任何的Java类和JavaBean都被当成Bean处理,这些Bean通过容器管理和应用。
Spring容器实现了IOC和AOP的机制,这些机制可以简化Bean对象之间的解耦;
Spring 容器有BeanFactory和ApplicationContext两种类型;
4、什么是JavaBean
一种简单规范的Java对象
5、何时使用Spring?
当需要管理JavaBean对象时就可以使用
Spring是最简洁的对象管理方案之一。
6、Spring容器的实例化 如何创建对象
ApplicationContext继承自BeanFactory接口,拥有更多的企业级方法,推荐使用该类型,实例化方法如下:
//加载文件系统中的配置文件实例化
String conf="C:\applicationContext.xml";
ApplicationContext ac=new FileSystemXmlApplicationContext(conf);
//加载工程classpath下的配置文件实例化
String conf="applicationContext.xml";
ApplicatonContext ac= new ClassPathXmlApplicationContext(conf);
7、如何使用Spring?
遵守Spring定义的规则,基于配置和默认规则,减少代码的书写
8、Spring容器的使用
从本质上讲,BeanFactory和ApplicationContext仅仅只是一个维护Bean定义以及相互依赖关系的高级工厂接口。通过BeanFactory和ApplicationContext我们可以访问bean定义。
首先在容器配置文件applicationContext.xml添加Bean定义
<bean id="标识符" class="Bean类型"/>
然后在创建BeanFactory和ApplicationContext容器对象后,调用getBean()方法获取Bean的实例即可
getBean("标识符")
9、Bean的实例化
Spring容器创建Bean对象的方法有一下3种
用构造器来实例化
使用静态工厂方法实例化
使用实例工厂方法实例化
将对象的创建规则告诉Spring,Spring会帮你去创建对象;
基于配置和默认规则,减少了代码的书写!
10、构造方法实例化
<bean id="" class="'/>
i或name属性用于指定Bean的名称,用于从Spring容器中查找这个Bean对象
class用于指定Bean的类型,会自动调用无参数构造器创建对象
11、使用静态工厂实例化
<bean id="" class="" factory-method="getInstance"/>
factory-method属性用于指定工厂中创建Bean对象的方法,必须用static修饰的方法。
12、使用实例化工厂方法实例化
<bean id="" class=""/>
<bean id="" factory-bean="上一个的id" factory-method="getTime"/>
factory-bean属性用于指定工厂Bean对象;
factory-method属性用于指定工厂中创建Bean对象的方法。
13、Bean 的命名
Bean的名称
在Spring容器中,每个Bean都需要有名字(即标识符),该名字可以用<bean>元素中的id或name属性指定
id属性比name严格,要求具有唯一性,不允许用"/"等特殊字符
Bean的别名
为已定义好的Bean,再增加另外一个名字引用,可以使用<alias>指定
<alias name="fromName" alias="toName"/>
14、Bean的作用域(见图示)
15、Bean的声明周期回调
指定初始化回调函数方法
<bean id="" class="" init-mmethod="init'></bean>
指定销毁回调方法,仅适用于singleton模式的bean
<bean id="" class="" detroy-method=""></bean>
提示:指定销毁回调方法,仅适用于singleton模式的bean
在顶级的<beans/>元素中的default-init-method属性,可以为容器所有<bean>指定初始化回调方法
在顶级的<beans/>元素中的default-destroy-method属性,可以为容器所有<bean>指定销毁回调方法
16、Bean的延迟实例化
在ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前实例化
如果不想让一个singleton bean在ApplicationContext初始化时被提前实例化,可以使用<bean>元素的lazy-init="true"属性改变
一个延迟化Bean将在第一次被用到时实例化
<bean id="" class="" lazy-init="" />
在定义的<beans>元素中的default-lazy-init属性,可以为容器所有<bean>指定延迟实例化特性
17、指定Bean依赖关系
当一个bean对另一个Bean存在依赖关系的时候,可以利用<bean>元素的depends-on属性指定
<bean id="beanOne" class="" despends-on="manager"/>
<bean id="manager" class=""/>
当一个Bean对多个Bean存在依赖关系时,despends-on属性可以指定多个bean名,用逗号隔开
<bean id="" class="" depends-on="manager1,manager2"/>