zoukankan      html  css  js  c++  java
  • spring 之 bean的作用及autowiring

    1. Bean对象的生命周期: 一个作用域,一个创建流程来分。

    2. Bean的作用域:

      Singleton:默认,单例,在一个容器中是唯一的。

      Prototype:原型,也叫多例,每次从容器中获取时,重新创建新的对象。(Action就是prototype);

      Request: 在一个请求范围内有效。

      Session: 在一个会话范围内有效。

      Application:在一个应用范围中均有效,相当于ServletContext。

      Global session:只在porlet中有效。

    3. Autowiring 自动装配:

    • Default:不使用自动装配
      <bean id="userDao" class="cn.wh.dao.impl.UserDaoImpl"/>
          <bean id="userService" class="cn.wh.service.impl.UserServiceImpl" autowire="default">
              <property name="userDao" ref="userDao"></property>
          </bean>
    • ByName:根据属性名到容器查找是否在和属性名相同的bean,如果找到那么自动装配
      <bean id="userDao" class="cn.wh.dao.impl.UserDaoImpl"/>
          <bean id="userService" class="cn.wh.service.impl.UserServiceImpl" autowire="byName">
          </bean>
    • ByType:根据属性的类型,到容器中查找相同类型bean对象,如果找到那么直接装配,如果有两个相同类型的对象就会报错
      <bean id="userDao" class="cn.wh.dao.impl.UserDaoImpl"/>
          <bean id="userService" class="cn.wh.service.impl.UserServiceImpl" autowire="byType">
          </bean>
    • Constructor:根据构造方法参数的类型自动注入,指定类型中要有对应的构造器。
      public class UserServiceImpl implements UserService{
          private UserDao userDao;
          
          public UserServiceImpl(UserDao userDao) {
              super();
              this.userDao = userDao;
          }
          @Override
          public void save() {
              userDao.save();
          }
          public void setUserDao(UserDao userDao) {
              this.userDao = userDao;
          }
      }

      配置:

      <bean id="userDao" class="cn.wh.dao.impl.UserDaoImpl"/>
          <bean id="userService" class="cn.wh.service.impl.UserServiceImpl" autowire="constructor">
          </bean>

      使用自动装配需要在bean的配置,比较麻烦,可以设置全局的自动装配类型:

      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:p="http://www.springframework.org/schema/p"
          xmlns:c="http://www.springframework.org/schema/c"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">

      

  • 相关阅读:
    javascript基础01
    javascript基础02
    javascript基础03
    javascript基础04
    javascript基础05
    javascript基础06
    Android 实现截屏功能
    android 获取摄像头像素
    c# Winform dataGridView动态添加行
    Android 读取Assets下的文件
  • 原文地址:https://www.cnblogs.com/forever2h/p/6744031.html
Copyright © 2011-2022 走看看