Spring的ioc配置
来源:互联网 发布:java webservice 抓包 编辑:程序博客网 时间:2024/05/09 17:27
1.实例化bean
只需要在配置文件中添加<bean></bean>即可
(1)最基础配置
<bean id="bean_test" class="cn.qtone.test.HelloWorld"></bean>实际上就相当于调用无参构造方法生成一个对象,等同于:
HelloWorld tmp = new HelloWorld();那么如果我们需要通过其他构造方法来生成对象,该如何做呢?
假如我们现在有如下构造方法:
public HelloWorld(String str){ ……}public HelloWorld(Date date, int i){ ……}这个时候,就需要在bean的配置上加上构造参数:
<!-- 使用一个参数的构造 --><bean id="bean_test" class="cn.qtone.test.HelloWorld" scope="prototype"> <constructor-arg value="hello"></constructor-arg> </bean>如果使用2个参数的构造方法,那么应该这么写:
<bean id="bean_date" class="java.util.Date" /><!-- 使用二个参数的构造 --><bean id="bean_test" class="cn.qtone.test.HelloWorld" scope="prototype"> <constructor-arg ref="bean_date"></constructor-arg> <constructor-arg value="345"></constructor-arg> </bean>这里使用了ref关键字,表示引用配置文件中id为bean_date的对象。对于类型,spring会做恰当的转换,如将345转化为数字
另外,如果构造方法参数过多,可以使用下标指定指定位置的参数:
<bean id="bean_date" class="java.util.Date"></bean> <bean id="person" class="spring.Person"> <constructor-arg index="0" value="ningyue"></constructor-arg> <constructor-arg index="1" value="23"></constructor-arg> <constructor-arg index="2" ref="bean_date"></constructor-arg> </bean>
(2)使用工厂创建
实际上就是通过工厂的方法来生成对象,可以是静态工厂,也可以是普通工厂。
1)静态工厂
对于静态工厂,里面生成对象的方法必须是静态的,所以静态工厂类可以不进行实例化
<bean id="PersonBean1" class="com.bean.PersonServiceBeanFactory" factory-method="createPersonBean1"/>
2)实例工厂
对于实例工厂,里面生成对象的方法不是静态的,所以必须也要对工厂类生成实例
<bean id="PersonBeanFactory" class="com.bean.PersonBeanFactory" ></bean><bean id="PersonBean3" factory-bean="PersonBeanFactory" factory-method="createPersonBean2"></bean>
2.bean中属性设置
简单地说,就是将Class中的属性赋值。通过property标签可以实现
(1)简单属性设置
<bean id="bean_test" class="cn.qtone.test.HelloWorld"> <property name="hello" value="你好!" /> <property name="world" value="世界" /> <property name="date" ref="bean_date" /></bean>因为实际上就是使用setXXX方法来进行设置的。
(2)集合属性设置
<bean id= "PersonService" class = "com.serviceImpl.PersonServiceImpl"><property name="set"><set><value>1</value><value>2</value><value>3</value></set></property></bean>
PersonServiceImpl类中
private Set<Integer>set= null;publicvoidsetSet(Set<Integer> set){ this.set = set;}<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);"> </span>
2)list集合
<bean id= "PersonService" class = "com.serviceImpl.PersonServiceImpl"><property name="list"><list><value>list1</value><value>list2</value><value>list3</value></list></property></bean>3)map集合
<bean id= "PersonService" class = "com.serviceImpl.PersonServiceImpl"><property name="map"><map><entry key="key1" value="value1"></entry><entry key="key2" value="value2"></entry><entry key="key3" value="value3"></entry></map></property></bean>
3.bean其他属性设置
(1)id和name
id和name都可以作为bean的标识符,但是name比较灵活,能够使用id不能使用的字符
(2)scope
1)singleton
表示在容器中只有一个bean的实例,如果不指定scope,默认的就是singleton<bean id="bean_date" class="java.util.Date" scope="singleton"></bean>
2)prototype
表示每次接到该类型对象的请求的时候,都会重新生成一个新的对象实例3)request
表示spring容器,即XMLWebApplicationContext会为每一个http请求创建一个全新的对象,请求结束后,该对象实例的生命周期也就结束了。实际上request算是prototype的一种特例,除了request只能用在web应用中,其他都差不多。4)session
对于web应用来说,放到session中最普遍的信息就是用户的登录信息,对于这种放到session中的信息,我们可以指定scope为session
注:如果bean过多,则可以以包为单位进行扫描,标签为:
<context:component-scan base-package="包名"></context:component-scan>这样的话,指定包下面的类都由spring来管理
- spring/IoC的配置
- Spring的ioc配置
- Spring的IoC的配置
- Spring IOC的配置使用
- Spring-IOC容器的配置
- Spring IOC的配置使用
- Spring IOC的配置使用
- IOC、Spring的IOC
- Spring IoC使用的基本配置
- 通过注解方式配置Spring的IoC
- Spring IOC的配置使用(转)
- Spring 基于注解的IOC配置
- spring的配置及ioc注解总结
- Spring IoC 注解配置
- Spring IOC/DI 配置
- Spring IoC 注解配置
- spring IOC配置
- Spring配置和IOC
- 解决Druid设置Oracle的Clob字段时的小坑
- hadoop2.6.0控制集群节点个数
- windows下使用maven编译flume
- Linux chmod命令详解
- JDBC连接Oracle 12c错误ORA-28040: No matching authentication protocol
- Spring的ioc配置
- STL中vector、list、deque和map的区别
- FFmpeg命令行工具系列五---audio参数
- [LeetCode] Length of Last Word
- 实用的js
- 第二十题
- Google Protocol Buffer(1)—Overview
- ZeptoLab Code Rush 2015---C. Om Nom and Candies
- [Leetcode 74, medium] Search a 2D Matrix