基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配

这篇具有很好参考价值的文章主要介绍了基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Bean的依赖注入配置

  • Bean的依赖注入方式

    • 注入方式 配置方式
      通过Bean的set方法注入
      <property name="userDAO" ref="userDAO"/>
      <property name="userDAO" value="userDAO"/>
      通过构造Bean的方法进行注入
      <constructor-arg name="userDAO" ref="userDAO"/>
      <constructor-arg name="userDAO" value="userDAO"/>
      • 其中,ref是reference的缩写形式,翻译为:涉及,参考的意思,用于引用其它Bean的id,value用于指定属性值

  • 注入数据类型

    • 普通数据类型:String、int、boolean,通过value属性指定

    • 引用数据类型:UserDAOImpl,通过ref属性指定

    • 集合数据类型:List、Map、Properties等

      • 普通数据类型的集合

        • 配置文件

          •     <bean name="UserService" class="com.example.Service.Impl.UserServiceImpl">
                    <property name="stringList">
                        <list>
                            <value>aaaa</value>
                            <value>bbbb</value>
                            <value>cccc</value>
                        </list>
                    </property>
                </bean>
      • 引用数据类型的集合

        • 配置文件(两种方式都可以)

        •         <property name="DAOList">
                      <list>
                          <ref bean="DAO1"></ref>
                          <ref bean="DAO2"></ref>
                          <ref bean="DAO3"></ref>
                          <ref bean="DAO4"></ref>
                      </list>
                  </property>
              </bean>
              <bean name="DAO1" class="com.example.DAO.Impl.UserDAOImpl"></bean>
              <bean name="DAO2" class="com.example.DAO.Impl.UserDAOImpl"></bean>
              <bean name="DAO3" class="com.example.DAO.Impl.UserDAOImpl"></bean>
              <bean name="DAO4" class="com.example.DAO.Impl.UserDAOImpl"></bean>
        •         <property name="DAOList">
                      <list>
                          <bean name="DAO1" class="com.example.DAO.Impl.UserDAOImpl"></bean>
                          <bean name="DAO2" class="com.example.DAO.Impl.UserDAOImpl"></bean>
                          <bean name="DAO3" class="com.example.DAO.Impl.UserDAOImpl"></bean>
                          <bean name="DAO4" class="com.example.DAO.Impl.UserDAOImpl"></bean>
                      </list>
                  </property>
      • bean的对应类

        • package com.example.Service.Impl;
          
          import com.example.DAO.UserDAO;
          import com.example.Service.UserService;
          
          import java.util.List;
          
          
          public class UserServiceImpl implements UserService {
              private List<String> stringList;
              private List<UserDAO> DAOList;
          
              public void setStringList(List stringList) {
                  this.stringList = stringList;
              }
          
              public void setDAOList(List daoList) {
                  this.DAOList = daoList;
              }
          
              public void showStringList() {
                  System.out.println(stringList);
                  System.out.println(DAOList);
              }
          
          
          }
          
      • 测试代码

        • package com.example.Test;
          
          import com.example.Service.Impl.UserServiceImpl;
          import org.springframework.context.support.ClassPathXmlApplicationContext;
          
          public class TestApplicationContext {
              public static void main(String[] args) {
                  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
                  UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("UserService");
                  userServiceImpl.showStringList();
              }
          }
          
      • 运行结果

        • 基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配,Spring 5,xml,java,前端

以上介绍的是List集合

下列直接展示Set、Map、Properties

  • 配置文件
    • <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
          <bean name="UserService" class="com.example.Service.Impl.UserServiceImpl">
              <property name="stringList">
                  <list>
                      <value>aaaa</value>
                      <value>bbbb</value>
                      <value>cccc</value>
                  </list>
              </property>
              <property name="DAOList">
                  <list>
                      <ref bean="DAO1"></ref>
                      <ref bean="DAO2"></ref>
                      <ref bean="DAO3"></ref>
                      <ref bean="DAO4"></ref>
                  </list>
              </property>
              <property name="StringSet">
                  <set>
                      <value>aaaa</value>
                      <value>bbbb</value>
                      <value>cccc</value>
                  </set>
              </property>
              <property name="DAOSet">
                  <set>
                      <ref bean="DAO1"/>
                      <ref bean="DAO2"/>
                      <ref bean="DAO3"/>
                      <ref bean="DAO4"/>
                  </set>
              </property>
              <property name="StringMap">
                  <map>
                      <entry key="StringMap1" value="aaaa"></entry>
                      <entry key="StringMap2" value="bbbb"></entry>
                      <entry key="StringMap3" value="cccc"></entry>
                  </map>
              </property>
              <property name="DAOMap">
                  <map>
                      <entry key="DAOMap1" value-ref="DAO1"></entry>
                      <entry key="DAOMap1" value-ref="DAO2"></entry>
                      <entry key="DAOMap1" value-ref="DAO3"></entry>
                      <entry key="DAOMap1" value-ref="DAO4"></entry>
                  </map>
              </property>
      
          </bean>
          <bean name="DAO1" class="com.example.DAO.Impl.UserDAOImpl"></bean>
          <bean name="DAO2" class="com.example.DAO.Impl.UserDAOImpl"></bean>
          <bean name="DAO3" class="com.example.DAO.Impl.UserDAOImpl"></bean>
          <bean name="DAO4" class="com.example.DAO.Impl.UserDAOImpl"></bean>
      </beans>
  • Bean对应的类

    • package com.example.Service.Impl;
      
      import com.example.DAO.UserDAO;
      import com.example.Service.UserService;
      
      import java.util.List;
      import java.util.Map;
      import java.util.Set;
      
      
      public class UserServiceImpl implements UserService {
          // todo 无参构造方法
      //    public UserServiceImpl() {
      //        System.out.println("无参构造方法");
      //    }
      
          // todo 有参构造方法
      //    public UserServiceImpl(String name) {
      //        System.out.println("有参构造方法");
      //        System.out.println(name);
      //    }
      
          //    private UserDAO userDAO;
      //
      //    public void setUserDAO(UserDAO userDAO) {
      //    }
          private List<String> stringList;
          private List<UserDAO> DAOList;
          private Set<String> StringSet;
          private Set<UserDAO> DAOSet;
          private Map<String, String> StringMap;
          private Map<String, UserDAO> DAOMap;
      
          public void setStringList(List stringList) {
              this.stringList = stringList;
          }
      
          public void setStringSet(Set<String> stringSet) {
              this.StringSet = stringSet;
          }
      
          public void setDAOList(List daoList) {
              this.DAOList = daoList;
          }
      
          public void show() {
              System.out.println("StringList:" + stringList);
              System.out.println("DAOList:" + DAOList);
              System.out.println("StringSet:" + StringSet);
              System.out.println("DAOSet:" + DAOSet);
              System.out.println("StringMap:" + StringMap);
              System.out.println("DAOMap:" + DAOMap);
          }
      
      
          public void setDAOSet(Set daoSet) {
              this.DAOSet = daoSet;
          }
      
          public void setStringMap(Map stringMap) {
              this.StringMap = stringMap;
          }
      
          public void setDAOMap(Map daoMap) {
              this.DAOMap = daoMap;
          }
      }
      
  • 测试类

    • package com.example.Test;
      
      import com.example.Service.Impl.UserServiceImpl;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class TestApplicationContext {
          public static void main(String[] args) {
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
              UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("UserService");
              userServiceImpl.show();
          }
      }
      
  • 运行结果

    • 基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配,Spring 5,xml,java,前端

 上述Bean的值都需要自己手动注入,下列展示自动注入

  • Bean的自动装配

    • 如果被注入的属性类型是Bean引用的话,那么可以在<bean>标签中使用autowire属性去装配自动注入方式,属性值有两个
      • byName:通过属性名自动装配,即去匹配SetXxx与id=“xxx”(name=“xxx”)是否一致;
      • byType:通过Bean的类型从容器中匹配,匹配出多个相同的Bean类型时会报错
      • <bean id="userService" class="com.example.Service.Impl.UserServiceImpl" autowire="byType"/>
    • 通过byNmae
    • 配置文件

      •     <bean id="userService" class="com.example.Service.Impl.UserServiceImpl" autowire="byName"/>
            <bean id="userDAO" class="com.example.DAO.Impl.UserDAOImpl"></bean>
    • Bean对应的类

      • 在该类总注入UserDAO(代码中体现在SetXxx()方法中)

      • package com.example.Service.Impl;
        
        import com.example.DAO.UserDAO;
        import com.example.Service.UserService;
        
        import java.util.List;
        import java.util.Map;
        import java.util.Set;
        
        
        public class UserServiceImpl implements UserService {
            private UserDAO userDAO;
        
            public void setUserDAO(UserDAO userDAO) {
                this.userDAO = userDAO;
            }
        
            public void show() {
                System.out.println(userDAO);
            }
        
        }
        
    • 测试类代码

      • package com.example.Test;
        
        import com.example.Service.Impl.UserServiceImpl;
        import org.springframework.context.support.ClassPathXmlApplicationContext;
        
        public class TestApplicationContext {
            public static void main(String[] args) {
                ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
                UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("userService");
                userServiceImpl.show();
                Object userDAO = context.getBean("userDAO");
                System.out.println(userDAO);
            }
        }
        
    • 运行结果

      • 基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配,Spring 5,xml,java,前端

      •    对比发现,成功通过名称将UserDAO完成了bean对象的注入
    • 手动注入配置文件如下
      •     <bean id="userService" class="com.example.Service.Impl.UserServiceImpl">
                <property name="userDAO">
                    <ref bean="userDAO"></ref>
                </property>
            </bean>
            <bean id="userDAO" class="com.example.DAO.Impl.UserDAOImpl"></bean>
    • 通过byType
      • 配置文件如下
        •     <bean id="userService" class="com.example.Service.Impl.UserServiceImpl" autowire="byType">
              </bean>
              <bean id="userDAO" class="com.example.DAO.Impl.UserDAOImpl"></bean>

 文章来源地址https://www.toymoban.com/news/detail-731297.html

到了这里,关于基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Xml方式Bean的配置-初始化方法和销毁方法

    Bean的初始化和销毁方法配置 Bean在被实例化后,可以执行指定的初始化方法完成一些初始化的操作,Bean在销毁之前也可以执行指定的销毁方法完成一些操作,初始化方法名称和销毁方法名称通过 指定的方法名于自己创建的方法名一致即可 测试类 运行结果如下 我们还可以通

    2024年02月07日
    浏览(42)
  • Spring:依赖注入的方式(setter注入、构造器注入、自动装配、集合注入)

    依赖注入的方式有setter注入、构造器注入、自动装配、集合注入 首先,Maven项目pom.xml依赖包如下: pom.xml 【注】:上述除spring依赖包之外其他三个依赖包用于测试使用。 1. setter注入 先说明一下,这里有的文件为Book2Dao(接口)、Book2DaoImpl(Book2Dao接口实现类)、Book2Service(接口)、

    2024年02月02日
    浏览(30)
  • Spring系列二:基于XML配置bean

    上文中, 我们学习到了 Spring系列一:spring的安装与使用 接下来我们学习, 通过XML配置bean Bean管理包括两方面: 创建bean对象, 给bean注入属性 案例: 通过spring的ioc容器, 获取一个bean对象, 获取方式: 按类型. 演示通过bean的类型获取对象 细节 按照类型获取bean, 要求ioc容器中的同一个

    2024年02月14日
    浏览(28)
  • quarkus依赖注入之三:用注解选择注入bean

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是《quarkus依赖注入》系列的第三篇,前文咱们掌握了创建bean的几种方式,本篇趁热打铁,学习一个与创建bean有关的重要知识点:一个接口如果有多个实现类时,bean实例应该如何选择其中的一个

    2024年02月14日
    浏览(35)
  • quarkus依赖注入之一:创建bean

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 对一名java程序员来说,依赖注入应该是个熟悉的概念,简单的说就是:我要用XXX,但我不负责XXX的生产 以下代码来自spring官方,serve方法要使用MyComponent类的doWork方法,但是不负责MyComponent对象的实

    2024年02月15日
    浏览(28)
  • quarkus依赖注入之四:选择注入bean的高级手段

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是《quarkus依赖注入》系列的第四篇,在应用中,一个接口有多个实现是很常见的,那么依赖注入时,如果类型是接口,如何准确选择实现呢?前文介绍了五种注解,用于通过配置项、profile等手

    2024年02月14日
    浏览(30)
  • quarkus依赖注入之九:bean读写锁

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇是《quarkus依赖注入》的第九篇,目标是在轻松的气氛中学习一个小技能:bean锁 quarkus的bean锁本身很简单:用两个注解修饰bean和方法即可,但涉及到多线程同步问题,欣宸愿意花更多篇幅与各位

    2024年02月14日
    浏览(27)
  • quarkus依赖注入之二:bean的作用域

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 官方资料:https://lordofthejars.github.io/quarkus-cheat-sheet/#_injection 作为《quarkus依赖注入》系列的第二篇,继续学习一个重要的知识点:bean的作用域(scope),每个bean的作用域是唯一的,不同类型的作用域

    2024年02月15日
    浏览(30)
  • 【Spring进阶系列丨第四篇】学习Spring中的Bean管理(基于xml配置)

    在之前的学习中我们知道,容器是一个空间的概念,一般理解为可盛放物体的地方。在Spring容器通常理解为BeanFactory或者ApplicationContext。我们知道spring的IOC容器能够帮我们创建对象,对象交给spring管理之后我们就不用手动去new对象。 那么Spring是如何管理Bean的呢? 简而言之,

    2024年02月05日
    浏览(59)
  • Spring 高级依赖注入 —— Bean的延迟依赖查找功能,ObjectFactory 和 ObjectProvider

    首先明确一下什么是延迟查找,一般来说通过 @Autowired 注解注入一个具体对象的方式是属于实时依赖查找,注入的前提是要保证对象已经被创建。而使用延迟查找的方式是我可以不注入对象的本身,而是通过注入一个代理对象,在需要用到的地方再去取其中真实的对象来使用

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包