spring总结2

一.Bean的配置

  1.bean常用属性和子元素:

 

bean属性说明
idbean的唯一标识符,spring容器对bean的配置,管理都通过该属性进行
namespring容器通过此属性进行配置和管理,name属性可以为bean指定多个名称,每个名称之间用逗号或分好隔开
class指定bean的实现类,他必须使用类的全限定名
scope用于设定bean实例的作用域,其属性值有singleton(单例)、prototype(原型)、request、session、global Session、application和websocket,默认值为singleton

       

bean子元素名称及属性说明
property<bean>元素的子元素,用于调用bean实例中的setter()方法完成属性赋值,从而完成依赖注入。该元素name属性指定bean实例中的相应属性名,ref属性或value属性用于指定参数值
constructor-arg<bean>元素的子元素,用于使用此元素传入构造参数进行实例化。该元素的index属性指定构造参数的序号(从0开始)type属性指定构造参数的类型,参数值可以通过ref属性或value属性直接指定,也可以通哟ref或value子元素指定
ref<property>、<constructor-arg>等元素的属性或子元素,可以用于指定对Bean工厂中某个Bean实例的引用
value<property>、<constructor-arg>等元素的属性或子元素,可以用于直接给定一个常量值
list用于封装List或数组属性的依赖注入
set用于封装Set类型属性的依赖注入
map用于封装Map类型属性的依赖注入
entry<map>元素的子元素,用于设置一个键值对。其key属性指定字符串类型的键值对,ref 属性或value属性直接指定其值,也可以通过ref或value子元素指定其值

2.作用域的种类

      

作用域名称说明
singleton(单例)使用singleton定义的bean在spring容器中国将只有一个实例,也就是说,无论有多少个bean引用它,始终将指向同一个对象,这也是spring容器中默认的作用域
prototype(原型)每次通过spring容器获取prototype定义的bean时,容器都将创建一个新的bean实例
request在一个HTTP请求中,容器会返回该bean的同一个实例,对不同的HTTP请求则会产生一个新的bean,而且该bean仅在当前HTTP Request 内有效
session再一次HTTP Session 中,容器会返回该bean的同一个实例,对不同的HTTP请求则会产生一个新的bean,而且该bean仅在当前Http Session内有效
application为每个ServletContext对象创建一个实例,仅在web相关的ApplicationContext中有效
websocket为每个Websocket对象创建一个实例,仅在web相关的ApplicationContext中有效
  

3.bean的装配

   (1)基于xml的装配:例子在前边(spring总结1)

   (2)基于Annotation的装配:注解装配

          spring中常用注解:

          

注解名称说明
@Component可以使用此注解描述spring中的bean,但它是一个泛化的概念,仅仅表示一个组件(bean),并且可以作用在任何层次。使用时只需要将该注解标注在相应类上即可
@Repository用于将数据访问层(Dao层)的类标识为spring中的bean,其功能与@Component相同
@Service通常作用在业务层(Service层),用于将业务层的类标识为spring中的bean,其功能与@Component相同
@Controller通常作用在控制层(如spring MVC的Controller),用于将控制层的类标识为spring中的bean,其功能与@Component相同
@Autowired用于对bean的属性变量,属性的setter()方法及构造方法进行标注,配合对应的注解处理器完成bean的自动配置工作。默认按照bean的类型进行装配
@Resource其作用与@Autowired一样,区别在于@Autowired默认按照bean类型装配,而@Resource默认按照bean实例明后才能进行装配。@Resource中有两个重要属性:name和type。spring将name属性解析为bean的实例名称,type解析为办类型的实例类型。若指定name属性,则按照实例名称进行装配。若指定type属性,则按照bean类型进行装配;若都不指定,则按照bean实例名称装配,不能匹配时再按照bean类型进行装配;若都无法匹配,则抛出NoSuchBeanDefinitionException异常
@Qualifer与@Autowired注解配合使用,会将默认的按照bean类型装配修改为按bean的实例名称装配

       通过使用注解装配任然要在xml文件中进行书写装配代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  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-3.2.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-3.2.xsd
   http://www.springframework.org/schema/aop 
   http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!--使用context命名空间在配置文件中开启相应的注解处理器-->
<context:annotation-config/>
<!--只需配置<bean>,不需配置bean下的属性变量-->
	<bean id="userDao" class="com.ssm.dao.impl.UserDaoImpl"/>
    ..........
</beans>

(3)自动装配:spring的<bean>语速中包含一个autowire属性,我们通过设置autowire的属性类自动装配bean。

      autowire属性有五个值:

属性值说明
default有<bean>的商机标签<beans>的default-autowire属性值确定。例如<beans default-autowire="byName">,该<bean>元素中的autowire属性对应的属性值为byName
byName根据属性的名称自动装配。容器将根据名称查找与属性完全一致的bean,并将其属性自动装配
byType根据睡醒的数据类型自动装配,如果一个bean的数据类型兼容另一个bean中属性的数据类型,则自动装配
constructor根据构造函数参数的数据类型进行byType模式的自动装配
no在默认情况下,不使用自动装配,bean依赖必须通过ref元素定义

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值