一,什么是Spring?
为什么要用Spring?
Spring的本质就是管理软件中的对象,如何创建对象和维护对象之间的关系
1.Spring是一个开源的轻量级的应用开发框架,其目的是简化企业级的应用程序开发,减少入侵;
2.Spring 提供的IOC和AOP应用,可以将组件的耦合度降至最低,届解耦,便于系统日后的维护和升级;
二,Spring容器的简介:
1)在Spring中,任何的java类和JavaBean都被当成 Bean处理,这些Bean通过容器管理和应用。
2)Spring容器实现了IOC和AOP机制,这些机制可以简化Bean对象创建和Bean对象之间的解耦;
3)Spring 容器有BeanFactory和ApplicationContext两种类型
什么是JavaBean:一种简单规范的Java对象
何时使用Spring?
当需要管理JavaBean对象时候就可以使用,Spring是最简洁的对象管理方案之一。
三,Spring容器的实例化,如何创建对象
ApplicationContext继承自BeanFactory接口,拥有更多的企业级方法,推荐使用该类型,实例化方法如下:
// 加载文件系统中的配置文件实例化
String conf = "c:\applicationContext.xml";
ApplicationContext ac = new FileSystemXmlApplicationContext(conf);
//加载工程classpath下的配置文件实例化
String conf = "applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
如何使用Spring?遵守Spring定义的规则,基于配置和默认规则,减少了代码的书写
四,Spring容器的使用
1) 从本质上讲,BeanFactory和ApplicationContext仅仅是维护Bean定义以及相互依赖关系的的高级工厂接口,通过容器BeanFactory和ApplicationContext我们可以访问bean定义。
2) 首先在在容器的配置文件 applicationContext.xml中添加
Bean的定义
<bean id="标识符" class=“Bean类型”/>
然后在创建BeanFactory和AppplicationContext容器对象后,调用getBean()方法获取Bean的实例即可
getBean(”标识符“);
五,Bean的实例化
Spring容器创建Bean对象的方法有一下3种
1)用构造器来实例化
2 )使用静态工厂方法实例化
3 )使用实例工厂方法实例化
将对象创建的规则告诉Spring,Spring会帮你去创建对象;
基于配置和默认规则,减少了代码的书写!
Bean实例化的例子:
a。用构造器来实例化:
<bean id="calendarObj1" class="java.util.GregorianCalendar"/>
<bean name="calendarObj2" class="java.util.GregorianCalendar"/>
解释:id或name属性用于指定Bean名称,用于从Spring中查找这个Bean对象;
class用于指定Bean类型,会自动调用无参数构造器创建对象
b。使用静态工厂方法实例化
<bean id="calendarObj2" class="java.util.Calendar" factory-method="getInstance"/>
id:属性用于指定Bean名称;
class:属性用于指定工厂的类型;
factory-method: 属性用于指定工厂中创建bean对象的方法,必须用static修饰的方法。
c。使用实例工厂方法实例化
<bean id="calendarObj3" class="java.util.GregorianCalendar"/>
<bean id ="dateObj" factory-bean="calendarObj3" factory-method="getTime"/>
id 用于指定Bean名称;
factory-bean 属性用于指定工厂Bean对象;
factory-method属性用于指定工厂中创建Bean对象的方法。
六。Bean的命名
1)Bean的名称
在Spring容器中,每个Bean都需要有名字(即标识符),该名字可以用<Bean>元素的id或name属性指定
2)id属性比name严格,要求具有唯一性,不允许“/”等特殊字符
为已定义好的Bean,再增加另外一个名字引用,可以用<alias>指定:
<alias name="fromname" alias="toname"/>
七。Bean的作用域
Spring容器在实例化Bean时,可以创建以下作用域的Bean对象;
下面的Bean作用域,可以通过<bean>定义的scope属性指定
Singleton : 在每个Spring IOC容器中定义一个Bean定义对应一个对象
实例,默认 项
prototype :一个bean定义对应多个对象实例
request: 在一次HTTP请求中,一个Bean定义对应一个实例 ,仅限于
Web环境
session :在一个HTTPSession中,一个bean定义对应一个实例,仅仅限于Web环境
global Session :在一个全局的HTTPSession中,一个bean定义对应一个实例;
八。Bean的生命周期回调
1) 指定初始化回调方法:
<bean id="exampleBean " class="com.foo.ExampleBean" init-method="init"> </bean>
2) 指定销毁回调方法,仅适用于 singleton 模式的bean
提示 :指定销毁回调方法,仅仅适用于singleton模式的bean
九,IOC概念
DI全称是Dependency Injection,被翻译为 依赖注入;
本质上讲 容器的工作就是创建bean时注入那些依赖关系,
DI主要有两种注入方式,即 Setter注入和构造器注入
Setter注入:在容器xml配制中,配置注入参数:
<bean id="dataSource" class="org.tarena.dao.JDBCDataSource">
<property name="driver" value="oracle.jdbc.OracleDriver"/>
</bean>
构造器注入:基于构造器的注入是通过调用带参数的构造器来实现的,容器在bean被实例化的,根据参数类型执行相应的构造器
<constructor-arg index="0" ref="dataSource">
来源:https://www.cnblogs.com/hdutang/p/5288059.html