zoukankan      html  css  js  c++  java
  • Spring基于构造函数和设值函数的依赖注入

    基于构造函数的依赖注入

    我们知道,bean标签中指定的类会进行初始化,这个初始化过程中自然会调用构造函数,那我们也可以利用这个构造函数完成依赖注入。

    先创建一个类:

    public class TextEditor {
        public TextEditor(SpellChecker spellChecker) {
            System.out.println("TextEditor的构造函数");
        }
    
        public TextEditor(String s) {
            System.out.println(s);
        }
    }

    如上,可以看见有两个构造函数。

    第一个构造函数的参数是自定义类型,第二个是一个字符串类型。两种不同的参数类型在配置文件中的写法是不一样的,下面会提到。

    再创建一个测试类:

    public class MainApps {
        public static void main(String[] args) {
            AbstractApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            TextEditor editor = (TextEditor) context.getBean("text");
        }
    }

    配置文件内容如下:

    <bean id="text" class="Dependency.injection.TextEditor">
         <constructor-arg type="java.lang.String" value="这是一个构造函数注入的值"/>
    </bean>

    配置文件中,除了常见的bean标签,需要使用constructor-arg标签来完成构造函数的注入。

    运行测试类输出:

    这是一个构造函数注入的值

    如果向调用上面一个构造函数,配置文件内容如下:

    <bean id="text" class="Dependency.injection.TextEditor">
      <constructor-arg ref="spellChecker"/>
    </bean>
    <bean id="spellChecker" class="Dependency.injection.SpellChecker"/>

    注意:

    1.如果你需要传递一个对象的引用,就直接用ref;如果你需要传递一个java自带的数据类型,则需要先在type里声明类型,再用value设置值。

    2.如果构造参数的参数列表有多个参数,则传递的顺序就是参数列表的顺序。

    基于设值函数的依赖注入

    通过bean调用设值函数来完成依赖注入。

    先准备一个类:

    public class TextEditor {
        private String name;
        //设值函数
        public void setName(String name) {
            this.name = name;
        }
    
        public void getName() {
            System.out.println(this.name);
        }
    
    }

    注意私有属性name,下面会通过bean设置这个属性的值。

    再准备一个测试类:

    public class MainApps {
        public static void main(String[] args) {
            AbstractApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            TextEditor editor = (TextEditor) context.getBean("text");
            editor.getName();
        }
    }

    配置文件内容如下:

    <bean id="text" class="Dependency.injection.TextEditor">
      <property name="name" value="李四"/>
    </bean>

    运行测试类输出:

    李四

    注意:

    1.设值函数也可以传递引用,同样使用ref。

    2.配置文件中,设值函数用的是property。构造函数注入用的是constructor-arg

  • 相关阅读:
    二维码
    文件下载
    相对路径使用的特殊符号
    Httpclient的使用
    MySQL比like语句更高效的写法
    jQuery中turn.js(翻页效果)学习笔记
    如何在忘记mysql的登录密码时更改mysql登录的密码(window及linux)
    详细介绍svn在eclipse中的使用(附图解说明)
    Xshell6远程访问linux及Xftp6远程针对linux系统中文件操作(附图文详解)
    利用workbench对linux/Ubuntu系统中的mysql数据库进行操作
  • 原文地址:https://www.cnblogs.com/lbhym/p/11929805.html
Copyright © 2011-2022 走看看