Spring-依赖注入简介与xml配置
来源:互联网 发布:数据库四种关系模型 编辑:程序博客网 时间:2024/06/07 06:10
spring核心是依赖注入。本质就是通过配置xml文件或注解来自动生成你需要的对象,放在spring的大容器中。
spring是一个独立的框架,既可以用在java SE项目中,也可以用在 Web项目中。程序先创建bean容器,再调用bean容器的getBean()方法来获取Spring容器中的bean。
spring是一个独立的框架,既可以用在java SE项目中,也可以用在 Web项目中。程序先创建bean容器,再调用bean容器的getBean()方法来获取Spring容器中的bean。
1.获得
1.1 spring 依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.2.RELEASE</version></dependency>会得到多个依赖的jar,见下图。
图1-1 spring的依赖jar
1.2 我的demo
简单的spring使用范例,项目地址: https://code.csdn.net/chuchus/springdemo/tree/master
2.生成bean
这里的bean类似于JavaBean,但范围要宽的很多。spring就像一个大容器,帮我们创建好对象后放入了它的容器。所有由它创建的对象,都叫bean。
bean的作用域:
singleton 每次调用getBean(),都返回同一个对象;
prototype 每次调用getBean(),都返回新的对象;
request 针对每次HTTP请求,Web应用中才有效。
singleton 每次调用getBean(),都返回同一个对象;
prototype 每次调用getBean(),都返回新的对象;
request 针对每次HTTP请求,Web应用中才有效。
2.1 BeanFactory
org.springframework.beans.factory.BeanFactory
接口。它是一个容器,spring生成的bean存放在它的实现类中。主要有下面几个方法。
Object org.springframework.beans.factory.BeanFactory.getBean(String name)
接口。它是一个容器,spring生成的bean存放在它的实现类中。主要有下面几个方法。
Object org.springframework.beans.factory.BeanFactory.getBean(String name)
根据名字拿到bean对象。
<T> T org.springframework.beans.factory.BeanFactory.getBean(String name, Class<T> requiredType)
getbean()的重载。
org.springframework.context.ApplicationContext
接口,,BeanFactory的子接口。
生成ApplicationContext的构造函数有:
FileSystemXmlApplicationContext 从当前项目位置算起,即src/目录的上层目录。
ClassPathXmlApplicationContext 从classes/开始算起。例子:
ClassPathXmlApplicationContext 从classes/开始算起。例子:
图2-1 bean配置文件的位置
ApplicationContext ctx =new ClassPathXmlApplicationContext("com/likeyichu/aop/beans.xml");
2.2 xml读properties配置
可以让spring读取我们的.properties文件。例子见下,注意用到的是org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://115.28.88.166:3306/AliyunDBjdbc.username=root3
占位
<bean id="jdbc"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations" value="/WEB-INF/jdbc.properties" /></bean><bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /></bean>
2.3初始化和销毁bean
当实例化一个bean时,可能需要执行一些初始化操作来确保该bean处于可用状态;同样地,当不再需要bean,将其从容器中移除时,我们还可能按顺序执行一些清除工作。此时我们需要init-method与destroy-method属性。
public class Stage{public void turnOnLight(){}public void turnOffLight(){}}
<bean id="stage" class="com.likeyichu.Stage" init-method="turnOnLight" destroy-method="turnOfflight" />
2.4装配集合
<bean id="book" class="com.likeyichu.sample.Book"><property name="bookList"><list><ref bean="bean1"/><ref bean="bean2"/></list></property><property name="bookSet"><set><ref bean="bean1"/><ref bean="bean2"/></set></property><property name="bookMap"><map><entry key="book1" value-ref="bean1"/><entry key="book2" value-ref="bean2"/></map></property></bean>
3.注入bean
两种注入
设值注入:通过<property .../>元素驱动spring执行setter方法。
构造注入:通过<constructor-arg.../> 元素驱动Spring执行带参数的构造函数。
设值注入:通过<property .../>元素驱动spring执行setter方法。
构造注入:通过<constructor-arg.../> 元素驱动Spring执行带参数的构造函数。
需要在bean类中实现所有private字段的setter方法。下面是示例spring配置。
<!-- 注入bean属性--><bean id="obj1" class="com.likeyichu.sample.Sample1" ><property name="field1" value="value1" /><!-- 无论字段属于哪种基本数据类型,value="都需要加引号"--><property name="field2" value="value2" /></bean><bean id="obj2" class="com.likeyichu.sample.Sample2" ><property name="field1" ref="obj1" /> <!--属性注入,引用其他bean--></bean><!-- 注入bean构造函数--><bean id="obj3" class="com.likeyichu.sample.Sample3"><constructor-arg value="123"/><!--第一个形参--><constructor-arg ref="obj1"/><constructor-arg ref="obj2"/></bean><!--对于只在一个地方引用到的bean,可以直接定义,免去ref--><bean id="mdbCacheManager" class="com.taobao.qd.common.cache.impl.DefaultCacheManager"><property name="namespace" value="62" /><property name="tairManager"><!--对于只在一个地方引用到的bean,可以直接定义,免去ref--><bean class="com.taobao.tair.impl.mc.MultiClusterTairManager"init-method="init"><property name="configID"><value>mdbcomm-daily</value></property></bean></property></bean>
4.自动装配
为了简化xml配置,spring提供了四种自动装配机制。
byName:把与bean的属性同名的其他bean,自动装配到对应属性中;若找不到,不装配。
byType:把与bean的属性同类型的其他bean,自动装配到对应属性中;若找不到,不装配。
constructor :把与bean的构造函数形参同类型的其他bean,自动装配到对应属性中;若找不到,不装配。
autodetect:尝试constructor装配,若失败,采用byType装配。
5.高级xml特性
<!-- 配置文件模块化分为多个,靠import标签引入--> <import resource="biz/common.xml" />
<!--<ref local="gradeBean" />等同于<ref bean="gradeBean" /> 。前者限定在当前文件中查找,减少冲突与出错几率--><bean id="uicExtraReadServiceClient" class="com.yichudu.Student"><property name="grade"><ref local="gradeBean" /></property></bean><bean id="gradeBean" class="com.yichudu.Grade">
0 0
- Spring-依赖注入简介与xml配置
- 传智播客 Spring学习 xml配置依赖注入
- spring 依赖注入xml配置原理解析
- Spring依赖注入之XML配置
- Spring之依赖注入与XML配置文件
- Spring XML注入依赖
- Spring 与依赖注入
- Spring依赖注入的xml文件的配置
- Spring——基于XML配置的依赖注入
- Spring:依赖注入(XML)
- 【Spring】使用XML进行Bean装配与依赖注入
- Spring依赖注入的配置
- Spring IOC与依赖注入
- Spring的核心机制依赖注入简介
- Spring的核心机制依赖注入简介
- Spring的核心机制依赖注入简介
- Spring的核心机制依赖注入简介
- Spring的核心机制依赖注入简介
- MongoDB介绍
- 求二进制中1的个数
- QuartZ Cron表达式
- 程序员修炼之道<一>
- ali2015, android cake 水题
- Spring-依赖注入简介与xml配置
- 选择排序方法
- 开发中的细节
- valgrind 的使用简介
- poi生成Excel分Excel2003和Excel2007(Excel2010)
- 网络编程练习-ioctl
- C#探秘系列(三)
- 开发者必备的十二大Android开发资源
- COCOS2D-X3.4 + Windows7 X64 + VS2012环境搭建