目录
场景描述
现在是一个普通的由Maven管理的JAVA项目,创建如图,这里是从头构建,难度一颗星※,很是简单(在了解Maven的基础上)
第一步:初始化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配置文件
根据上面的内容创建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;
}
}
例如配置文件改成: