初识Spring框架~控制反转IoC、依赖注入DI以及Spring项目的创建方式

目录

Spring框架初识

Spring IoC

IoC(控制反转)

DI(依赖注入)

Spring项目的创建

创建一个maven项目

配置XML文件 

添加启动类 

简单了解Bean对象的存储与获取 

创建一个Spring IoC容器

注册Bean对象

获取并使用Bean对象 


Spring框架初识

通常所说的Spring是指Spring Framework(Spring框架),它是一个开源的框架,目前企业中开发JAVA项目,Spring框架几乎是标配,这个框架中包含了很多组件:Spring容器/IOC容器、SpringMVC、SpringAOP。Spring可以说是包含了众多工具方法的IOC容器

Spring IoC

上面说到是一个IoC容器,其具备两个最基础的功能:将对象存储到容器中、从容器中取出对象。因此,在学习Spring时,主要就是学会如何将对象存储到Spring中,再从Spring中获取对象的过程。

对于Spring IoC容器来说,是管理Bean对象的容器.单纯从存放数据这个角度来看,Spring IoC容器与普通的集合框架一样,但使用Spring容器存放对象,对象不需要程序员手动去new,需要进行管理的对象,直接放入到容器中。

· Bean对象即普通的java实例对象

IoC(控制反转)

IoC即控制反转,是面向对象编程中的一种设计原则。对于Spring容器来说,IoC将实例化对象以及组织间的依赖关系,都转交给IoC容器来进行管理。控制权由程序员自己控制,转变为IoC容器控制,控制权发生反转,因此称为IoC容器。

使用IoC容器,按照框架约定的写法,就可以实现,框架统一管理Bean'对象的生命周期、Bean对象之间的依赖关系。

DI(依赖注入)

DI,即依赖注入,也就是由IoC容器在运行时动态的将某种依赖关系注入到对象之中。

依赖注入和控制反转其实是从不同的角度描述同一件事,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦.也可以说IoC是是思想,而DI是其具体的实现。

Spring项目的创建

创建一个maven项目

配置XML文件 

关于pom.xml文件的配置可以直接从我的gitee中复制:Spirng项目pom.xml文件的配置

添加启动类 

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 

简单了解Bean对象的存储与获取 

创建一个Spring IoC容器

package org.example;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class APP {
    public static void main(String[] args) {
        //ApplicationContext是Spring容器的顶级接口
        //AnnotationConfigApplicationContext其中的一个实现类,作用是:
        //(1)扫描指定的包路径下,使用了Spring框架注解的类
        //(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
        ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
    }
}

注册Bean对象

使用类注解的方式来注册Bean对象

 

package org.example.model;

import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

//以下四个注解,都是类注解,用于注册Bean对象
//注册的方式,默认是Bean ID(名称),是类名首字母小写
@Controller
//@Service
//@Repository
//@Component
public class Bean {
    public void sayHello() {
        System.out.println("hello");
    }
}

获取并使用Bean对象 

获取Bean对象有两种方式

①通过Bean的类型来获取

        // (1)通过bean的类型来获取
        Bean b1_1 = context.getBean(Bean.class);
        System.out.println(b1_1);

②通过Bean的id(名称)来获取

        //(2)通过bean的id(也叫bean的名称)
        Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
        System.out.println(b1_2);

使用Bean 

上面已经获取到了bean对象,之后就可以直接使用

        //使用bean
        b1_1.sayHello();
        b1_2.sayHello();

完整代码 

package org.example;

import org.example.model.Bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class APP {
    public static void main(String[] args) {
        //ApplicationContext是Spring容器的顶级接口
        //AnnotationConfigApplicationContext其中的一个实现类,作用是:
        //(1)扫描指定的包路径下,使用了Spring框架注解的类
        //(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
        ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
        //获取Bean对象有两种方式:
        // (1)通过bean的类型来获取
        Bean b1_1 = context.getBean(Bean.class);
        //(2)通过bean的id(也叫bean的名称)
        Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
        //使用bean
        b1_1.sayHello();
        b1_2.sayHello();
    }
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li_yizYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值