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();
相关推荐
色空大师2 小时前
maven引入其他项目依赖爆红
java·maven
ONExiaobaijs5 小时前
【无标题】
java·开发语言·spring·maven·程序员创富
风景的人生5 小时前
springboot项目用maven插件打包时候报错
java·spring boot·maven
二哈喇子!5 小时前
基于SSM框架的网上商城购物系统的设计与实现(开源项目——实现CRUD功能整体流程超详细)
java·spring·mybatis·ssm
青w韵6 小时前
SpringBoot3.x 升级到 SpringBoot 4.x,JDK17升级到JDK21
java·后端·spring
梁bk6 小时前
[spring cloud] Seata分布式事务管理
分布式·spring·spring cloud
惊讶的猫6 小时前
nia500总结
java·spring·mybatis
二哈喇子!8 小时前
controller & service & dao之间的关系
java·eclipse·intellij-idea
TT哇8 小时前
IDEA压缩空的软件包
java·ide·intellij-idea
阿里-于怀8 小时前
阿里云为何要将数据采集开发套件开源
spring·阿里云·开源·agent·loongsuite