idea 新建spring maven项目、ioc和依赖注入

文章目录

一、新建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依赖

二、在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名称
                -->
      • 第二种方式

        • 使用构造函数方式
          • 接口类

            复制代码
                  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();
相关推荐
okok__TXF1 小时前
SpringBoot3+AI
java·人工智能·spring
16Miku1 小时前
基于SpringAI的电商客服智能体
spring·ai
找不到、了5 小时前
Spring-Beans的生命周期的介绍
java·开发语言·spring
caihuayuan45 小时前
React Native 0.68 安装react-native-picker报错:找不到compile
java·大数据·sql·spring·课程设计
不再幻想,脚踏实地6 小时前
Spring AOP从0到1
java·后端·spring
会敲键盘的猕猴桃很大胆6 小时前
Day11-苍穹外卖(数据统计篇)
java·spring boot·后端·spring·信息可视化
极客智谷6 小时前
Spring Cloud动态配置刷新:@RefreshScope与@Component的协同机制解析
后端·spring·spring cloud
Lizhihao_7 小时前
Spring MVC 接口的访问方法如何设置
java·后端·spring·mvc
所待.3838 小时前
深入解析SpringMVC:从入门到精通
前端·spring·mvc
录大大i8 小时前
2_Spring【IOC容器中获取组件Bean】
java·spring