目录
场景描述
第一步:初始化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项目
创建一个小猫小狗一起叫的类,包结构如下:
以下是全部代码,请根据类名对应文件:
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-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别名+作用范围+使用场景”)
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;
}
}
例如配置文件改成: