zoukankan      html  css  js  c++  java
  • SpringIOC-设置注入实现

    SpringIOC框架简单实现


    简单介绍

    依赖注入( Dependency Injection ,简称 DI) 与控制反转 (IoC) 的含义相同,只不过这两个称呼是从两个角度描述的同一个概念,具体如下:

    • 依赖:bean对象的创建依赖于容器。
    • 注入:bean对象中的所有属性,由容器来注入。
    • 控制反转(IoC:依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做

    依赖注入可以有效的解耦合。


    具体实现

    有两种实现的方法,一种是配置xml文件来实现,另一种是通过参数实现,来,找个简单的例子让咱们上手试一试。(Intellij IDEA 2020)

    首先,咱们先配置一下相关的jar包(pom.xml)

         <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.3.5</version>
            </dependency>
    

    创建一个Pet接口,存放方法say()

         public interface Pet {
        void say();
    }
    
    

    创建一个Person类

        public class Person {
        private String name;
        private Pet pet;
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setPet(Pet pet) {
            this.pet = pet;
        }
    
        public void keepPet() {
            System.out.println(name + " 比" + pet + " 可爱,因为它会说");
            pet.say();
        }
    }
    
    

    创建一个Dog类,继承Pet接口

    public class Dog implements Pet{
        private String name;
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return name;
        }
        public void say(){
            System.out.println("WangWang");
        }
    }
    

    重点来了,配置applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <bean id="dog" class="Ex_04.Dog">
            <property name="name" value="哈士奇"></property>
        </bean>
        <bean id="person" class="Ex_04.Person">
            <property name="name" value="拉布拉多"></property>
            <property name="pet" ref="dog"></property>
        </bean>
    </beans>
    
    • bean中class为你所创建的包的地址,即Dao层,Service层的地址,为了方便我将其放在一起。
    • 为给dog类中name属性赋值哈士奇。
    • 元素value属性为一个具体的值,ref为引用,该代码中“ ref="dog" ”对应的是dog类的属性name,相当于new,此处可以体现解耦合

    基本类已创建完毕,让我们来创建一个实现类

    public class Text_04 {
        public static void main(String[] args) {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            Person person = (Person) applicationContext.getBean("person");
            person.keepPet();
        }
    }
    
    

    输出结果为:拉布拉多 比哈士奇 可爱,因为它会说WangWang

    总结

    以上就就是以xml文件实现SpringIOC框架,如有错误,麻烦指出,感谢耐心到现在的朋友 : ) ---By 不断努力的Yang

  • 相关阅读:
    类的再理解
    关于网络配置和zmp以及json
    PCL 库安装
    Ros学习注意点
    Ros集成开发环境配置
    《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记
    《Effective C++》第1章 让自己习惯C++-读书笔记
    《TCP/IP详解卷1:协议》第2章 链路层-读书笔记
    《TCP/IP详解卷1:协议》第1章 概述-读书笔记
    C++内存分配与对象构造的分离
  • 原文地址:https://www.cnblogs.com/LaChlanYang/p/14690344.html
Copyright © 2011-2022 走看看