Spring的IoC、Bean、DI的简单实现,难度:※※※

目录

场景描述

第一步:初始化Maven项目

第二步:Maven导入Spring包(给代码)

第三步:创建Spring配置文件

第四步 创建Bean

第五步 简单使用Bean (有代码)

第六步 通过依赖注入使用Bean(有配置文件和代码)


场景描述

现在是一个普通的由Maven管理的JAVA项目,创建如图,这里是从头构建,难度一颗星※,很是简单(在了解Maven的基础上)

 (现在的Intellij IDEA已经有Maven的捆绑了,所以直接新建项目就行,但是捆绑的Maven会被墙,下不了Spring包,解决方案如下:)报错:org.mybatis:mybatis:jar:3.5.17 failed to transfer from https://repo.maven.apache.org/maven2-优快云博客文章浏览阅读139次,点赞7次,收藏4次。原因是maven的官方仓库被墙了,所以需要配置镜像mirror,最简单的解决方法是重写配置文件(不管是使用的Intellij IDEA自带的捆绑的maven还是下载的maven都可以这样解决!2. 配置文件的镜像部分,如果没有settings.xml文件就自己新建一个,有的话就在这上面找到mirrors标签然后改即可(两种方式都提供了)1. 找到Intellij IDEA中的Maven配置:File -> Settings -> (最长的那个选项) -> 构建工具Build。https://blog.youkuaiyun.com/violinlove/article/details/145208466?fromshare=blogdetail&sharetype=blogdetail&sharerId=145208466&sharerefer=PC&sharesource=violinlove&sharefrom=from_linkhttps://blog.youkuaiyun.com/violinlove/article/details/145208466?fromshare=blogdetail&sharetype=blogdetail&sharerId=145208466&sharerefer=PC&sharesource=violinlove&sharefrom=from_link

第一步:初始化Maven项目

 创建一个小猫小狗一起叫的类,包结构如下:

 以下是全部代码,请根据类名对应文件:

package org.example;



public class Main {
    public static void main(String[] args) {
        AnimalSet animalSet = new AnimalSet();
        animalSet.animalSetSound();
    }
}
package org.example;

import org.example.package1.Animal;
import org.example.package2.Cat;
import org.example.package2.Dog;

public class AnimalSet{
    Animal animal1 = new Cat();
    Animal animal2 = new Dog();

    public void animalSetSound(){
        animal1.sound();
        animal2.sound();
    }
}
package org.example.package2;
import org.example.package1.Animal;

public class Cat implements Animal{
    @Override
    public void sound(){
        System.out.println("cat sound");
    }
}
package org.example.package2;

import org.example.package1.Animal;

public class Dog implements Animal {
    public void sound() {
        System.out.println("dog sound");
    }
}
package org.example.package1;

public interface Animal {
    void sound();
}

第二步:Maven导入Spring包(给代码)

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.2.1</version>
        </dependency>

第三步:创建Spring配置文件

如果没有找遍列表没有Spring配置文件的话,说明Maven没有导入Spring成功,请看报错:org.mybatis:mybatis:jar:3.5.17 failed to transfer from https://repo.maven.apache.org/maven2-优快云博客文章浏览阅读140次,点赞7次,收藏4次。原因是maven的官方仓库被墙了,所以需要配置镜像mirror,最简单的解决方法是重写配置文件(不管是使用的Intellij IDEA自带的捆绑的maven还是下载的maven都可以这样解决!2. 配置文件的镜像部分,如果没有settings.xml文件就自己新建一个,有的话就在这上面找到mirrors标签然后改即可(两种方式都提供了)1. 找到Intellij IDEA中的Maven配置:File -> Settings -> (最长的那个选项) -> 构建工具Build。https://blog.youkuaiyun.com/violinlove/article/details/145208466https://blog.youkuaiyun.com/violinlove/article/details/145208466

 根据上面的内容创建bean标签,配置Spring的IoC的Bean,如果你不知道什么是IoC什么是Bean,请看Spring/SpringBoot的IOC、Bean、DI-优快云博客

第四步 创建Bean

    <bean id="cat" class="org.example.package2.Cat"/>
    <bean id="dog" class="org.example.package2.Dog"/>

第五步 简单使用Bean (有代码)

可以通过使用Bean的方式然后不需要每次都new对象:(也可以通过配置scope让其每次都new对象,参见专栏中的“Spring的Bean详解=Bean别名+作用范围+使用场景”)

package org.example;

import org.example.package1.Animal;
import org.example.package2.Cat;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SimpleBean {
    public static void main(String[] args) {
        //可以对比一下
        
        Animal catOriginal1 = new Cat();
        Animal catOriginal2 = new Cat();
        System.out.println("catOriginal1" + catOriginal1);
        System.out.println("catOriginal2" + catOriginal2);
        
        ApplicationContext iocContext = new ClassPathXmlApplicationContext("applicationConfig.xml");
        Animal cat1 = (Animal) iocContext.getBean("cat");
        Animal dog1 = (Animal) iocContext.getBean("dog");
        Animal cat2 = (Animal) iocContext.getBean("cat");
        Animal dog2 = (Animal) iocContext.getBean("dog");
        cat1.equals(cat2);
        dog1.equals(dog2);

        System.out.println("cat1 = " + cat1);
        System.out.println("cat2 = " + cat2);

    }
}

第六步 通过依赖注入使用Bean(有配置文件和代码)

Spring的配置文件:

    <bean id="cat" class="org.example.package2.Cat"/>
    <bean id="dog" class="org.example.package2.Dog"/>
    <bean id="animalSet" class="org.example.AnimalSet">
        <property name="animal1" ref="cat"></property>
        <property name="animal2" ref="dog"></property>
    </bean>

 

 这里的animal1或者animal2就和Cat或者Dog类解耦合了!!!咱们只需要在配置文件里面修改,就可以很轻松地改变小动物的类型!!!

 修改Main方法通过IoC容器获取animalSet对象:

package org.example;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        ApplicationContext iocContext = new ClassPathXmlApplicationContext("applicationConfig.xml");
        AnimalSet animalSet = (AnimalSet) iocContext.getBean("animalSet");
        System.out.println(animalSet);
        animalSet.animalSetSound();

    }
}
package org.example;

import org.example.package1.Animal;

public class AnimalSet{
    Animal animal1;
    Animal animal2;

    public void animalSetSound(){
        animal1.sound();
        animal2.sound();
    }

    public void setAnimal1(Animal animal1) {
        this.animal1 = animal1;
    }
    public void setAnimal2(Animal animal2) {
        this.animal2 = animal2;
    }

}

 例如配置文件改成:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值