spring bean的作用域和自动装配

Posted zhouyeqin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring bean的作用域和自动装配相关的知识,希望对你有一定的参考价值。

1 Bean的作用域

  • l  singleton单列:整个容器中只有一个对象实例,每次去访问都是访问同一个对象  默认是单列
  • l  prototype原型: 每次获取bean都产生一个新的对象,比如Action
  • l  request:每次请求时创建一个新的对象
  • l  session:在会话的范围内是一个对象,http那个session
  • l  global session:只在portlet下有用,表示application
  • l  application:在应用范围内有效

注意:配置action的时候注意设置bean作用域为scope=”prototype”,其他不常用。

2 Bean自动装配---简化spring配置文件

在配置bean时,可以配置bean的autowire属性,用于指定装配类型

//下面代码中的类的创建见spring IOC

// no不使用自动装配
//byName根据名称(set方法名首字母小写)去查找相应的bean,如果有则装配上去
<bean name=userDao" class="com.silvan.dao.impl.UserDaoOracleImpl" />
<bean name="userService" class="com.silvan.service.impl.UserServiceImpl" autowire="byName"/>
//使用bean
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}
// byType根据类型进行自动装配  不用管bean的id或name 但是同类型的bean只能有一个  建议慎用。其中UserDaomysqlImpl属于UserDao子类型,所以会被自动装配
<bean class="com.silvan.dao.impl.UserDaoMySqlImpl"/>
<bean name="userService" class="com.silvan.service.impl.UserServiceImpl" autowire="byType"/>
//根据类型判断使用哪个bean
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
} 

可以配置全局的自动装配类型,在头部default-autowire

<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" default-autowire="byName">

 

推荐不使用自动装配,而使用annotation。

 

以上是关于spring bean的作用域和自动装配的主要内容,如果未能解决你的问题,请参考以下文章

3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/

Spring框架Spring依赖注入DIBean作用域Bean的自动装配

Spring 学习笔记—— Bean之间的关系作用域自动装配

Spring在AuthenticationSuccessHandler中自动装配会话范围bean不起作用

Spring4学习笔记 - 配置Bean - 自动装配 关系 作用域 引用外部属性文件

学习笔记——Spring管理第三方bean;Spring中Bean的作用域;Spring中Bean的生命周期;Spring中bean的后置处理器;Spring中自动装配