zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    python基础之入门
    C#直接删除指定目录下的所有文件及文件夹(保留目录)
    删除Oracle文件、注册表
    WinRAR 激活码(KEY)
    用C#读取txt文件的方法(转)
    c# 生成 xml 文件
    Asp.Net 文件下载1——流下载(适用于大文件且防盗链)(转)
    Asp.Net异常:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"的解决方法
    响应在此上下文中不可用 asp.net
    Ajax实现局部刷新
  • 原文地址:https://www.cnblogs.com/zhouyeqin/p/7207665.html
Copyright © 2011-2022 走看看