• 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

  • 相关阅读:
    犯错记录(一)
    BullseyeCoverage:代码覆盖率。
    测试工具:insure++
    C++ 常见容器
    linux修改rm指令执行(数据安全)
    C++细节系列(零):零散记录
    vim中使用gdb。
    vim自动补全文章搜集
    排序算法的个人心得体会。
    面向对象的三个特征。
  • 原文地址:https://www.cnblogs.com/LaChlanYang/p/14690344.html
Copyright © 2020-2023  润新知