美文网首页
Spring原理简述

Spring原理简述

作者: 力先生的小屋 | 来源:发表于2020-06-10 15:27 被阅读0次

一、什么是Spring容器?

Spring容器,也称Spring Ioc容器或bean容器,是Spring框架的核心,Srping容器对很多人来说是比较抽象难以理解的;

1、从概念层面讲,对象的创建、初始化以及销毁的整个生命周期都交由Spring容器去管理,大大减少了开发的工作量;

2、从代码层面讲,一个Spring容器就是一个实现了ApplicationContext接口的类的一个实例,即一个Spring容器就是一个AlicaitonContext(对象)


ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

Cat democat = context.getBean("cat",Cat.class);

如上图,context就是创建的一个Spring容器,容器里装载着applicationContext.xml文件中配置的所有对象。

二、Spring容器是如何管理对象的

首先先介绍一下两个概念:IOC(控制反转)、DI(依赖注册)。

IOC:将对象的创建、初始化和销毁的整个生命周期都交给容器去做,而不是再有程序员自己去new了,所以称之为控制反转,这个概念顾名思义很好理解,这也与上面介绍Spring容器的概念呼应。

DI:Spring在启动的时候会实例化所需要的类,这里以实例化A类为例,若存在A类依赖于B类的情况,在实例化A对象的过程中会首先实例化B类,再实例化A类,依赖传入A类的方式必须是通过A类的构造函数,因此A类在实例化的过程中会接收并保存依赖的对象。


//B类

public class Car{

private String color;

private brand;

public Car(String color,String brand){

this.color = color;

this.brand = brand;

}

}

//A类,依赖于B类

public class Boss{

private Car car;

public Boss(Car car){

this.car = car;

}

}

三、SpringBoot中创建bean的几种方式

不同于Spring框架中bean的配置都是在xml中进行的,比较繁琐,springboot中主要采用注解的方式实现bean的创建

1、注解形式:@Component、@Service、@Repository、@Controller

Spring运行时,容器会自动扫描加载被这些注解修饰的类,自动生成bean,并保存到Spring容器中

2、@Bean形式:配合@Configuration注解创建bean


@Configuration

public class BeanLoadConfig {

    @Bean

    public ConfigDemoBean configDemoBean() {

        return new ConfigDemoBean();

    }

}

@Configuration相当于xml文件中的beans标签,@Bean相当于bean标签,方法名相当于bean标签中的id,方法的返回值注入到sprig容器中,相当于class的一个实例。

具体可参考该博文,简单易懂:https://blog.csdn.net/luzhensmart/article/details/90666380

四、Springboot中bean的使用方式

上面讲到了Springboot中bean的创建过程,下面就将如何在项目中使用bean。

1、使用@AutoWired和@Resource注解实现自动装配,如下图所示:

被@Controller修饰的CaseManagerController类在实例化为bean对象的过程中需要先对依赖CoreAutoTestCase类进行实例化,CoreAutoTestCase类实例化生成bean后,通过@Autowired或@Resource注解,装配注入到当前的bean对象中,也就是说CaseManagerController类实例化bean对象中保存有CoreAutoTestCase类的实例化bean对象信息。因为在被@controller修饰的类中几乎是不存在构造函数的,我们上一章节讲到依赖只能通过构造函数注入到当前的bean中,因此@AutoWired和@Resource注解也相当于起到了一个这样的一个构造函数的作用,下面我们就要将通过构造函数的方式使用bean对象了。


@Controller

public class CaseManagerController {

    @Autowired

    private CoreAutoTestCase coreAutoTestCase;

    @Autowired

    private CoreAutoTestPlanCaseRelationshipMapper relationshipMapper;

.................

2、构造方法:就是在构造方法中传入Bean对象来初始化


@Controller

public class CaseManagerController {

    private CoreAutoTestCase coreAutoTestCase;

    public CaseManagerController(CoreAutoTestCase coreAutoTestCase){

this.coreAutoTestCase = coreAutoTestCase;

}

    .................

-----------未完,待补充。
原博文链接:http://www.54gwz.cn/article/1591175285

相关文章

网友评论

      本文标题:Spring原理简述

      本文链接:https://www.haomeiwen.com/subject/rllptktx.html