Spring学习(一)——Spring与Bean


前言

学习spring内容记录


一、Spring是什么?

平常的Java开发中,程序员在某个类中需要依赖其它类的方法。 通常是new一个依赖类的实例再调用该实例的方法,这种开发存在的问题是new的类实例不好统一管理。

Spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。

依赖注入的另一种说法是”控制反转”IOC。通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员。而控制反转是指new实例工作不由我们程序员来做而是交给Spring容器来做

简单来说,Spring是一个轻量级的**控制反转(IoC)和面向切面(AOP)**的容器框架,用来装java bean(java对象)。也可以称为可插拔式开发框架,像插头和插座一样,插上就用,不用就拔下来。这就是Spring框架核心理念。

IOC:一种容器,实现控制反转(获得依赖对象的过程被反转了),应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。
DI:依赖注入(控制反转),是IOC的一种实现方式,创建对象并且组装对象之间的关系。

Spring中通过IOC容器来让我们调用对象时无需先创建对象(new一个对象),原来我们写代码的时候,在一个类中调用其他类的方法或变量,如果这个方法或变量不是静态的,那么我们就需要先new出这样一个对象,再通过对象名调用其方法或变量(这样会导致代码结构复杂,耦合度高,难以复用,也难以进行单元测试),现在有了Spring,Spring解放了我们的双手,降低了我们的代码耦合度,我们只需要定义这样一个类型的成员变量,无需new出来,然后通过一些配置方式让这个类型的实例注入到该类中(这实际上是个实例化的过程),这也就是我们所说的依赖注入的概念。

二、Java bean 和 Spring Bean

JavaBean 是特殊的 Java 类,使用 Java 语言书写,并且遵守 JavaBean API 规范。 JavaBean 与其它 Java 类相比而言具有以下几个独一无二的特征:

♦ 类必须是具体的和公共的,提供一个默认的无参构造函数。
♦ 需要被序列化并且实现了 Serializable 接口。
♦ 可能有一系列可读写属性。
♦ 可能有一系列的 getter 或 setter 方法

2.1 Java Bean 示例

package com.runoob;

public class StudentsBean implements java.io.Serializable
{
   private String firstName = null;
   private String lastName = null;
   private int age = 0;

   public StudentsBean() {
   }
   public String getFirstName(){
      return firstName;
   }
   public String getLastName(){
      return lastName;
   }
   public int getAge(){
      return age;
   }

   public void setFirstName(String firstName){
      this.firstName = firstName;
   }
   public void setLastName(String lastName){
      this.lastName = lastName;
   }
   public void setAge(int age) {
      this.age = age;
   }
}

Spring容器对Bean没有特殊要求,不像java Bean一样遵循一些规范

在传统的java应用中,bean的生命周期很简单。使用java关键字new进行bean实例化,然后该bean就可以使用。一旦这个bean不再使用,则有java自动进行垃圾回收。
在Spring中,Bean的创建是由Spring容器进行的。也就是说,在Spring中使用Bean的时候,不是由关键字New来创建实例

2.2 Spring Bean

所谓装配Bean,就是将一个个的Bean分别注入到对应的类中去,那么,Spring中,提供了三种注入方法:

  1. 在XML文件中显式配置
  2. 在JAVA中显式配置(JavaConfig)
  3. 隐式的bean发现机制和自动装配

Spring框架本质上作为一个容器的角色存在,我们程序中对象的创建,以及对象间的依赖关系都交由Spring来完成,当我们需要使用对象时,只需向spring容器获取即可,实现了模块间、对象间的解耦,所有对象信息都配置在applicationContext.xml配置文件中,当Spring框架启动时,创建spring容器,读取applicationContext.xml配置文件对象对象到spring容器中去。程序后续使用对象时都从spring容器中获取(getBean方法)。


参考:

https://zhuanlan.zhihu.com/p/50528891
https://www.zhihu.com/question/398256955/answer/1254321910

四、spring中的设计模式

https://www.iteye.com/blog/bijian1013-2274150

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值