Spring——IoC控制反转相关概念和idea中使用maven创建第一个程序

目录

1.IoC控制反转概念

1.1 Spring框架使用依赖注入(DI)实现loc

2.使用maven创建第一个例子理解

2.1准备工作

 2.2 Ioc代码完成功能

 2.3 Spring实现步骤


1.IoC控制反转概念

        控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建,属性赋值,依赖的管理。

        控制:对象创建、属性赋值,声明周期管理。

        反转:把开发人员管理对象的权限转移给了代码之外的容器实现,由容器完成对象的管理。

        正转:开发人员在代码中,使用 new 构造方法创建对象,开发人员掌握了对象的创建、属性赋值,对象从开始到销毁的全部过程,开发人员都具有对 对象 的全部控制权限。

        IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式是依赖注入。应用广泛。

1.1 Spring框架使用依赖注入(DI)实现loc

        依赖注入:DI(Dependency Injection),程序代码不做定位查询,这些工作由容器自行完成。

         依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。
        Spring 的依赖注入对调用者与被调用者几乎没有任何要求,完全支持对象之间依赖关系的管理。

        Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些Java 对象被称为 Bean。Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用“依赖注入”的方式来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦和。

2.使用maven创建第一个例子理解

2.1准备工作

        首先,需要创建一个空项目 :首先 File → New → Project → 选择最下面的空项目(Empty Project),创建一个空项目。

        创建maven项目

 

 

第一个大框框是maven的路径。第二格大框框是工作区间位置,可以自己设置,但是需要是一个工作区间

设置相关的配置

 完成后,准备工作就算是完成了,接下来就是代码部分。

首先,需要确定目录结构

 src下面是main(代码部分)和test(用于测试类)。 main下面是两个文件,一个是resource用于资源文件 ,要将文件类型修改为 Resources Root。java里面就是我们写的后端代码.  resource修改为资源文件,右键

接下来就是完成代码了,让我们来看看ioc到底完成什么样的一个功能

 2.2 Ioc代码完成功能

首先,我们需要看pom.xml文件

 添加Spring的依赖


<!-- spring依赖 -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.5.RELEASE</version>
</dependency>

测试类的依赖一般都有,也留一份吧

<!--单元测试-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>

接下来,我们开始试试ioc到底能干吗。创建一个service包。写一个接口接口名为SomeService

package com.liuhaiyang.service;

public interface SomeService {
    void doSome();

}

写它的实现方法一般在同包下创建Impl包来存放接口的实现类

public class shixian implements SomeService{

    //spring默认使用的是无参构造方法来创建对象  如果定义了有参构造方法,应该再定义一个无参构造方法
        public shixian(){

            System.out.println("无参构造方法!!");
    }
        @Override
        public  void doSome() {

            System.out.println("执行业务方法dosome()");
        }
}

resources资源文件 建beans.xml文件

 添加代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- 1.跟标签是beans    2.beans后面的是约束文件说明
3。beans里面是bean声明。(一个beans里有多个bean)
4.bean就是Java对象,spring容器管理的Java对象,叫bean-->
<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">

<!--声明对象 id:自定义对象名称,唯一值。(可以没有,spring提供一个默认的名称)
           class:类的全限定名称,spring通过反射机制创建对象,不能是接口
           spring根据id,class创建对象,把对象放到spring的一个map对象
           map.put(id, 对象)
-->
   <bean id="someservice" class="com.liuhaiyang.service.shixian" />
   <bean id="mytime" class="java.util.Date"/>
</beans>

写测试类Test

package com.liuhaiyang;

import com.liuhaiyang.service.SomeService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.Date;

public class MyTest {
    //Spring 创建对象,调用是类的那个方法?  默认调用无参构造方法
    //spring是在什么时候创建的对象?  创建spring容器对象的时候,会读取配置文件,创建文件中声明的Java对象
    //优点:获取对象速度块,因为对象已经创建好了  缺点:占用内存
    //spring容器创建对象,一次创建几个?  在创建容器对象时,会把配置文件中的所有对象都创建出来(config)
    @Test
    public void test01(){
        // 1.指定spring配置文件:从类路径(classpath)之下开始的路径
        String config="beans.xml";
        //2.创建容器对象,ApplicationContext 表示spring容器对象。通过ctx获取某个Java对象
        ApplicationContext ctx=new ClassPathXmlApplicationContext(config);
        //3.从容器中获取指定名称的对象,使用getBean(“id”)  或者getBean(类.class)
        SomeService service=ctx.getBean(SomeService.class);
        //4.调用对象的方法,接口中的方法
        Date date= (Date) ctx.getBean("mytime");
        System.out.println(date);
        service.doSome();
    }

}

运行结果

 2.3 Spring实现步骤

1.创建maven项目


2.加入依赖,修改pom.xml文件
    Spring-context: spring依赖    junit:单元测试


3.开发人员定义类:接口和实现类
    类也可以没有接口。
    接口和实现类定义: 和没有spring一样(该咋定义咋定义)


4.创建spring的配置文件。作用:声明对象。
    吧对象交给spring创建和管理
    使用<bean>表示声明对象,一个bean表示一个Java对象


5.创建容器中的对象。
    创建一个表示spring容器的对象 ApplicationContext
    从容器中,根据名称获取对象,使用getBean(“对象名称”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值