一、新建Spring-Maven项目
- 在pom.xml文件中添加插件管理依赖
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
- 在pom.xml文件中添加Spring-Context依赖
- 其他版本地址
- https://mvnrepository.com/artifact/org.springframework/spring-context
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency>
- 其他版本地址
二、在Spring-context使用IOC和依赖注入
- 在resource里面新建一个spring的xml文件
-
applicationContext.xml ,如图
-
新建接口类
package org.study; public interface ISomeService { void doSome(); }
-
新建接口实现类
package org.study; public class SomeService implements ISomeService{ /** * 构造函数 */ public SomeService() { System.out.println("SomeService 构造函数!"); } /** * */ @Override public void doSome() { System.out.println("doSome 函数!"); } }
-
Main函数中执行
package org.example; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.study.ISomeService; public class Main { public static void main(String[] args) { //加载配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //第一种方式 ISomeService iSomeService = (ISomeService)context.getBean("SomeService"); iSomeService.doSome(); //第二种方式 要求:获取对应的实例,该实例必须实现对应的接口 ISomeService iSomeService1 = context.getBean("SomeService",ISomeService.class); iSomeService.doSome(); } }
-
在当前的服务中调用其他服务
- 第一种方式
- 使用setter的方式
- 接口类
package org.study; public interface ISomeService1 { void doSome(); }
- 实现类
package org.study; public class SomeService1 implements ISomeService1{ private ISomeService iSomeService; public void setiSomeService(ISomeService iSomeService) { this.iSomeService = iSomeService; } /** * 构造函数 */ public SomeService1() { System.out.println("SomeService1 构造函数!"); } /** * */ @Override public void doSome() { iSomeService.doSome(); } }
- 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 ="SomeService" class="org.study.SomeService"></bean> <bean id="SomeService1" class="org.study.SomeService1" > <!--使用 setter--> <property name="iSomeService" ref="SomeService"></property> </bean> </beans> <!-- name : 提供setter方法的属性名称 ref:容器中已经有的bean名称 -->
- 接口类
- 使用setter的方式
- 第二种方式
- 使用构造函数方式
- 接口类
package org.study; public interface ISomeService1 { void doSome(); }
- 实现类
package org.study; public class SomeService1 implements ISomeService1{ private ISomeService iSomeService; public SomeService1 (ISomeService iSomeService){ this.iSomeService = iSomeService; } /** * 构造函数 */ public SomeService1() { System.out.println("SomeService1 构造函数!"); } /** * */ @Override public void doSome() { iSomeService.doSome(); } }
- 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 ="SomeService" class="org.study.SomeService"></bean> <bean id="SomeService1" class="org.study.SomeService1" > <constructor-arg name="iSomeService" ref="SomeService"></constructor-arg> </bean> </beans> <!-- name : 属性名称 ref:容器中已经有的bean名称 -->
- 接口类
- 使用构造函数方式
- main函数执行
ISomeService1 iSomeService1 = context.getBean("SomeService1",ISomeService1.class); iSomeService1.doSome();
- 第一种方式
-