Java真的不难(四十二)Spring的入门

Spring的入门

Spring的自我介绍:

Spring官网:https://spring.io/
Spring框架是一个开放源代码的框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。Spring解决了开发者在开发中遇到的许多常见的问题,提供了功能强IOC、AOP及Web MVC等功能

其中最重要的两个知识就是:控制反转(IOC)、面向切面编程(AOP)

当然还有一直听说过的Spring全家桶:Spring Framework、springBoot、Spring Data、SpringCloud、Spring Security。

1、Spring体系结构图:

在这里插入图片描述

2、 Spring的优缺点:

优点:

  1. Spring是轻量级框架,可以自由选择使用哪几个Spring模块
  2. 通过控制反转与依赖注入,实现了对象依赖之间的解耦,降低了业务对象替换的复杂性
  3. 支持面向切面编程,将业务功能与额外功能分离,实现了高内聚
  4. 提供了Spring容器,统一管理对象的生命周期和配置信息
  5. 等…

缺点:

  1. 使用了大量的反射机制,比较占内存
  2. 配置比较复杂(XML)
  3. 等…

3、Spring的导入

导入Spring主要有两种方式:
1、直接去官网下载jar包:网址:https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/3.2.0.RELEASE/

2、构建maven项目,在pom.xml写入依赖,加载依赖:

  <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.20</version>
        </dependency>
        <!--spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.20</version>
        </dependency>
        <!-- spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.20</version>
        </dependency>
        <!-- spring-expression -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.3.20</version>
</dependency>

最终在jar包里面或者依赖库里面可以得到以下依赖项:
在这里插入图片描述

4、初试Spring

首先定义一个JavaBean类:

public class HelloSpring {
    
    

    private String who;

    public void setWho(String who) {
    
    
        this.who = who;
    }

    public void print(){
    
    
        System.out.println("hello"+this.who+"使用Spring框架");
    }
}

创建spring的配置文件:applicationContext.xml
写bean,这里就不放顶部的配置信息

<bean id="HelloSpring" class="zte.springdemo.HelloSpring">
    <!--给HelloSpring类型的helloSpring对象的属性who注入了一个值-->
    <property name="who">
        <value>张三</value>
    </property>
</bean>

测试类:

之前通过new一个对象的方式实现:

public class test {
    
    
    public static void main(String[] args) {
    
    

    HelloSpring helloSpring = new HelloSpring();
    helloSpring.setWho("张三");
    helloSpring.print();
    }
}

现在通过Spring容器管理去实现:

public class SpringTest01 {
    
    
    
    @Test
    public void springTest01(){
    
    
        ApplicationContext context = new ClassPathXmlApplicationContext("springContest.xml");
        HelloSpring helloSpring = (HelloSpring) context.getBean("HelloSpring");
        helloSpring.print();
    }

}

输出:

欢迎张三使用Spring框架

通过Spring框架,我们不需要再去new对象,而是通过applicationContext.xml配置文件中直接注入值,然后通过 newClassPathXmlApplicationContext(“springContest.xml”) 引入xml配置文件即可。

这个也就是.IOC控制反转

  • 正向控制:需要手动new创建这个对象,缺点:耦合性太高
  • 反向控制:需要从Spring容器中获取到需要的对象,不需要关心对象的创建过程,也就是把创建对象的权利反转给了Spring容器,优点:松耦合\

IOC实现原理:工厂模式+反射+配置文件

这样就完成了对Sping的一个导入以及初试!!!

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_57310550/article/details/125218076
今日推荐