目录
场景描述
第一步:初始化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-CSDN博客文章浏览阅读139次,点赞7次,收藏4次。原因是maven的官方仓库被墙了,所以需要配置镜像mirror,最简单的解决方法是重写配置文件(不管是使用的Intellij IDEA自带的捆绑的maven还是下载的maven都可以这样解决!2. 配置文件的镜像部分,如果没有settings.xml文件就自己新建一个,有的话就在这上面找到mirrors标签然后改即可(两种方式都提供了)1. 找到Intellij IDEA中的Maven配置:File -> Settings -> (最长的那个选项) -> 构建工具Build。https://blog.csdn.net/violinlove/article/details/145208466?fromshare=blogdetail&sharetype=blogdetail&sharerId=145208466&sharerefer=PC&sharesource=violinlove&sharefrom=from_linkhttps://blog.csdn.net/violinlove/article/details/145208466?fromshare=blogdetail&sharetype=blogdetail&sharerId=145208466&sharerefer=PC&sharesource=violinlove&sharefrom=from_link
第一步:初始化Maven项目
创建一个小猫小狗一起叫的类,包结构如下:
以下是全部代码,请根据类名对应文件:
java">package org.example;public class Main {public static void main(String[] args) {AnimalSet animalSet = new AnimalSet();animalSet.animalSetSound();}
}
java">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();}
}
java">package org.example.package2;
import org.example.package1.Animal;public class Cat implements Animal{@Overridepublic void sound(){System.out.println("cat sound");}
}
java">package org.example.package2;import org.example.package1.Animal;public class Dog implements Animal {public void sound() {System.out.println("dog sound");}
}
java">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-CSDN博客文章浏览阅读140次,点赞7次,收藏4次。原因是maven的官方仓库被墙了,所以需要配置镜像mirror,最简单的解决方法是重写配置文件(不管是使用的Intellij IDEA自带的捆绑的maven还是下载的maven都可以这样解决!2. 配置文件的镜像部分,如果没有settings.xml文件就自己新建一个,有的话就在这上面找到mirrors标签然后改即可(两种方式都提供了)1. 找到Intellij IDEA中的Maven配置:File -> Settings -> (最长的那个选项) -> 构建工具Build。https://blog.csdn.net/violinlove/article/details/145208466https://blog.csdn.net/violinlove/article/details/145208466
根据上面的内容创建bean标签,配置Spring的IoC的Bean,如果你不知道什么是IoC什么是Bean,请看Spring/SpringBoot的IOC、Bean、DI-CSDN博客
第四步 创建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别名+作用范围+使用场景”)
java">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对象:
java">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();}
}
java">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;}}
例如配置文件改成: