• 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。

  • 相关阅读:
    poj 3636
    poj 1065 Wooden Sticks
    2017北京国庆刷题Day6 afternoon
    2017北京国庆刷题Day5 afternoon
    2017北京国庆刷题Day3 afternoon
    2017北京国庆刷题Day3 morning
    2017北京国庆刷题Day2 afternoon
    2017北京国庆刷题Day2 morning
    poj2420 A Star not a Tree?
    NOIP2016 愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/zhouyeqin/p/7207665.html
Copyright © 2020-2023  润新知