javaee - Spring-01

什么是Spring

可以说Spring是一个提供了更完善开发环境的一个框架,一个容器,可以为POJO(Pure Old Java Object)对象提供企业级的服务。Spring采用分层架构,这意味着可以仅选择其中任何一个独立的部分,而它的架构是内部一致的。

为什么使用Spring

对于 Java 编程来说,使用 Spring 能使项目完成的更加快速,更容易并更安全。通俗的说,Spring就是一些组件或者配件,用造汽车来说,我们需要车轮,发动机等之类的配件,而对于这些配件,并不需要我们自己去制造,只需要花钱买来自己组装就可以了,而Spring就提供了这些组件在我们编程序时,需要什么组件,直接引入就可以用了,而不需要自己再去编写来实现。Spring 专注于速度,便捷与开发效率,也正是如此,让Spring成为了全世界最流行的 Java 框架。’

Spring Framework

Spring专注于为 Java 企业应用提供一站式的开发框架,目的是让 Java 企业开发更加便捷,安全与高效。 Spring Framework 属于其中最基础,最核心的部分,Spring下的其他大部分框架都依赖 Spring Framework 。对于整个Spring Framework来说,是学习、使用Spring生态项目(如Spring Boot、Spring Cloud等)的基石。也就是说,我们要引入其他Spring项目作为我们的依赖框架时,也会使用Spring Framework。以上子模块包括的内容我们只学习其中最重要的三个部分:Core Container、AOP、WebMVC。

Core Container(核心容器)

spring-core 和 spring-beans 模块,这两个模块提供了整个Spring框架最基础的设施:IoC (Inversion of Control,控制反转) 和 DI (Dependency Injection,依赖注入)。这部分功能相当于所有Spring 框架运行的基础,以前我们操作对象都需要手动的 new 对象,由对象的作用域决定对象的生命周期。使用Spring后,由框架提供了统一的容器来实例化、管理这些对象,并自动组织对象与对象间的关系。这种容器称为IoC容器,有些地方也叫Spring Bean容器、Spring容器。对象之间的复杂关系(体现在代码中就是对象中成员变量,引用了另一个对象),也交给了容器来进行设置。
IoC/DI背景
大多数应用程序都是由两个或是更多的类通过彼此的合作来实现企业逻辑,这使得每个对象都需要获取与其合作的对象(也就是它所依赖的对象)的引用。如果这个获取过程要靠自身实现,那么这将导致代码高度耦合并且难以维护和调试。

什么是IOC
IoC (Inversion of Control,控制反转) ,是一种设计思想,使用它可以进行解耦。是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度(解耦)。系统中通过引入实现了IoC模式的IoC容器,即可由IoC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分离。从使用上看,以前手动new对象,并设置对象中属性的方式,控制权是掌握在应用程序自身。现在则全部转移到了容器,由容器来统一进行管理对象。因为控制权发生了扭转,所以叫控制反转。
什么又是IoC容器
实现了IoC思想的容器就是IoC容器,比如:SpringFremework, Guice(Google开源的轻量级DI框架)
什么又是DI
DI (Dependency Injection,依赖注入) 是实现IoC的方法之一。所谓依赖注入,就是IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。所以,依赖注入(DI)控制反转(IoC)是从不同的角度的描述的同一件事情,就是指通过引入 IoC 容器,利用依赖关系注入的方式,实现对象之间的解耦。

什么是bean

把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了。就比如说皇上要做一件事,他不想亲自去,他就可以给公公下达任务,让他拿着自己的金牌去替自己做(见到金牌如见皇上),这样皇上只需要等待结果就可以了。而在Spring中,我们每个程序员就相当于皇上,需要一个类的实例对象时,不需要我们自己去创建,只需要通知公公(bean)我需要这个类的实例(就是上面说的车轮),bean就会给我们返回一个我们需要的实例了(车轮)。(做皇上的感觉是不很爽啊!!!!)

而我们使用bean的时候,可以这样理解:
我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean(注册,将类放到容器中)或者给出一个Bean(注入,从容器中取出类进行使用)。

Spring简单实践

1、创建一个maven项目,不需要选择模板。
2、在pom.xml文件中引入项目以来的Spring包。

<properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-framework.version>5.2.10.RELEASE</spring-framework.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
    </dependencies>

然后要记得刷新,以便加载所需的依赖包。
在这里插入图片描述
然后在src/main/java目录下随便创建一包并创建一个类。
在这里插入图片描述
我是创建了org.example这样的包,并创建了App这个类。然后在resources目录下创建一个XML文件。
在这里插入图片描述
在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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="org.example"/>
    //package后面写自己的包名,org.example是我的包名

</beans>

然后再在这个包下创建一个类,并把它放入Spring容器中。把类放到容器中很简单,只需要在类前面加一个注解就可以了,这四个都可@Controller、@Service、@Repository、@Component,一般前三个用的比较多

@Controller
//@Service
//@Repository
//@Component

public class LoginController {

}

然后在一开始创建的类里写代码,来取出我们刚才放入的类

package org.example;
import org.example.controller.LoginController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
    public static void main(String[] args) {
        //根据Spring配置文件路径创建容器:应用上下文对象
        ApplicationContext context = new
                ClassPathXmlApplicationContext("beans.xml");
        //这里的beans.XML就是你刚创建的XML文件,要写自己的,到时候Spring就是根据beans.xml里的
        // “配置包”(配置包只是便于理解,并不是这样叫的)
        // 才知道要去扫描哪个包下的类

        //下面是从Spring中取出我们刚刚放入的类
        //方法一、通过类型来获取
        LoginController loginController = context.getBean(LoginController.class);
        System.out.println("方法一" + loginController);
        //方法二、通过类名来获取,获取到的是object对象,所以这里需要强转
        LoginController loginController1 = (LoginController)context.getBean("loginController") ;
        System.out.println("方法二" + loginController1);

        //关闭容器
        ((ClassPathXmlApplicationContext) context).close();
    }
}

运行结果,当然你们放进去的类不一定和我的一样,只要你自己放进去的和取出来的一样即可。
在这里插入图片描述

当然这里只是简单的放入和取出了以下,主要是为了理解Spring的整体流程。希望有帮助到您!!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值