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。

  • 相关阅读:
    Django中实现加载渲染模版
    【干货】批量文件合拼 cat 命令的使用
    【Sql】获取数据库字段信息
    【C#】 TxtHelper
    【Css】鼠标
    【HTTP】H5唤醒支付宝
    【dotnet】程序集注入
    【OpenXml】excel 导入导出
    一、API​​网关
    【kafka】二、kafka的基本概念
  • 原文地址:https://www.cnblogs.com/zhouyeqin/p/7207665.html
Copyright © 2011-2022 走看看