Spring学习笔记
来源:互联网 发布:编程流程图 编辑:程序博客网 时间:2024/06/06 01:43
<beans>
<!--导入其他xml文件-->
<import resource="resources1.xml" />
<import resource="resources2.xml" />
<!--bean注入-->
<bean id="bean1" class="****"></bean>
<bean name="bean2" class="****"></bean>
<!--bean取个别名-->
<alias alias="bean3" name="bean2" />
</beans>
Spring bean的命名:
1)配置全限定类名,唯一(就是说在bean注册里面的class必须只有一个)
2)指定id,唯一 (就是说在bean注册里面的id必须只有一个)
3)指定name,唯一 (就是说在bean注册里面的name必须只有一个)
4)同时指定id和name,但他们也必须唯一
5)指定多个name,其中第一个是标识符(相当于id),后面都是别名,他们用分号(“;”)或逗号(",")隔开,每一个name都唯一
6)指定别名,使用alias标签,唯一[<aliasname="wwjd"alias="bean4"></alias>]。
example:
<?xml version="1.0"encoding="ISO-8859-1"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd ">
<bean class="com.dao.WwjdImpl"></bean>
<bean id="wwjd"class="com.dao.WwjdImpl"></bean>
<bean name="wwjdByName"class="com.dao.WwjdImpl"></bean>
<bean name="bean1;bean2;bean3"class="com.dao.WwjdImpl"></bean>
<alias name="wwjd"alias="bean4"></aliasb>
</beans>
spring bean 实例化
构造器实例化Bean是最简单的方式,Spring IoC容器既能使用默认的空构造器也能使用有参数构造器两种方式创建Bean,如以下方式指定要创建的Bean类型:
1.空构造器实例化:
<beanid="wwjd"class="com.dao.spring_slh.WwjdImpl"/>
2.有参数构造器实例化:
<bean id="wwjdwitharg"class="com.dao.spring_slh.WwjdImpl">
<!--指定构造器参数-->
<constructor-argindex="0"value="天下孰为尊,唯独破天元!"type="java.lang.String"/>
</bean>
2)使用静态工厂方式实例化bean
使用静态工厂的方式除了指定必须的class属性,还要指定factory-method属性来指定实例化bean的方法(需要加static),而且使用静态工厂方法也允许指定方法参数,Spring IOC容器将调用此属性指定的方法来获取Bean,配置如下:
<bean id="wwjdInstanceFactory"class="com.dao.spring_slh.WwjdStaticFactory"factory-method="newInstance">
<constructor-arg index="0"value="我相信的我绝不质疑!"></constructor-arg>
</bean>
3)使用实例工厂方法实例化bean
<!--定义实例工厂bean-->
<!--使用实例工厂bean创建bean-->
<bean id="wwjdInstance"factory-bean="wwjdInstanceFactory"factory-method="instance">
<constructor-arg index="0"value="为辅则忠,为主则淡。我的世界既不黑也不白只是一道精致的灰。"></constructor-arg>
</bean>
spring bean作用域
创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的“配方(recipe)”。把bean定义看成一个配方很有意义,它与class很类似,只根据一张“处方”就可以创建多个实例。
你不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用域。这样你可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域。Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext)。
1、singleton:当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。
注意:Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton,可以这样配置:
<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl" scope="singleton">
2、prototype:一个bean定义对应多个对象实例。Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl" scope="prototype">
3、request:在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:
<bean id="loginAction" class=cn.csdn.LoginAction" scope="request"/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例,且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用域的bean实例将被销毁。
4、session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例,且该userPreferences bean仅在当前HTTP Session内有效。与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
5、global session:在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
- spring gossip(spring 学习笔记)
- spring学习笔记: Spring AOP
- spring学习笔记: Spring Jdbc
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习笔记:spring controller
- spring学习笔记:spring事务管理
- Spring 学习笔记:浅谈 Spring
- spring学习笔记: Spring AOP
- Spring学习笔记-Spring容器
- Spring学习笔记 - Spring Data
- Spring学习笔记-Spring Cache
- Spring学习笔记 - Spring Boot
- Spring学习笔记: Spring概述
- Spring 学习笔记
- Spring学习笔记
- Spring AOP学习笔记
- Spring学习笔记(一)
- C++对象模型解析三
- Android Priority Job Queue使用(1)
- more item ListView demo
- 输入流转换字符串(解析)
- Java异常处理
- Spring学习笔记
- Ubuntu14.04上配置Swift3.0环境
- Spark统计词汇量/排行榜/中位数
- 选择排序
- Fast Compressive Tracking (高速压缩跟踪)
- SAS统计分析学习笔记(七)——相关和简单回归分析
- Machine Learning---8--模型评估与分类性能度量
- Eigen: 二维Vector怎么转为矩阵
- machine learning学习笔记<二>