Java

Spring 学习笔记【1】第一个Spring程序与IoC思想

2022-06-04  本文已影响0人  十万嬉皮_c728

一、Spring相关概念

1️⃣Spring发展史

Spring 是 Java EE 编程领域的一款轻量级的开源框架,由Spring 之父Rod Johnson 于 2002 年提出并创立,它的目标就是要替换以 EJB 为核心的开发方式(EJB的诟病:使用复杂、代码臃肿、代码侵入性强、开发周期长、移植难度大等),简化开发。所以Spring的出现又被喻为程序员的春天,哈哈😁

image.png

之后Spring不断发展,2004 年,Spring 1.0 版本正式发布。2017年,Spring 步入到了第 5 个大版本,也就是我们常说的 Spring 5,本教程就是基于Spring 5.2.10.RELEASE讲解。

image.png

2️⃣Spring大家族

Spring 官网

2.1狭义的Spring

狭义上的Spring通常指Spring Framework,即 Spring 框架,本教程主要讲解的就是Spring 5.0框架

image.png

2.2广义的Spring

广义上的 Spring 泛指以 Spring Framework 为核心的 Spring 技术栈。如:Spring FrameworkSpringBootSpringCloud

image.png

3️⃣Spring核心思想

Spring核心是控制反转(IoC)和面向切面编程(AOP)

IoC和AOP也是本系列教程主要讲解的内容

4️⃣Spring 优点

  1. 方便解耦,简化开发
    • 对象的创建和依赖关系的维护交给 Spring 工厂管理
  2. 方便集成各种优秀技术
    • 表现层(web):Spring MVC、Struts2 等框架的整合
    • 业务逻辑层(service):提供管理事务和记录日志的功能
    • 持久层(dao):MyBatis、Hibernate 和 JdbcTemplate 等技术的整合
  3. 支持面向切面(AOP)编程
    • 实现权限拦截和运行监控等功能
  4. 其他功能
    • 声明式事务:通过配置就可以完成对事务的管理
    • 程序测试:Spring 支持 JUnit单元测试

二、第一个Spring程序

1️⃣创建Maven项目

image.png

2️⃣添加Spring的依赖jar包

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>

3️⃣创建Java类

public class HelloSpring {
    private String message;
    public void setMessage(String message) {
        this.message = message;
    }
    public void getMessage() {
        System.out.println("message : " + message);
    }
}

4️⃣创建spring配置文件

image.png
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--
        bean标签表示配置bean
        id属性表示给bean分配唯一id
        class属性表示给bean定义类型
    -->
    <bean id="helloSpring" class="com.bighorn.HelloSpring">
        <property name="message" value="Hello Spring!"/>
    </bean>
</beans>

5️⃣编写主方法

public class App {
    public static void main(String[] args) {
        //获取IoC容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //从容器中获取对象
        HelloSpring helloSpring = context.getBean("helloSpring", HelloSpring.class);
        helloSpring.getMessage();
    }
}

运行结果

image.png

三、IoC控制反转

1️⃣IoC思想简介

image.png

2️⃣Spring和IoC的关系

3️⃣DI依赖注入

4️⃣IoC 容器的两种类型

Spring 框架为我们提供了两种不同类型 IoC 容器,分别是 BeanFactoryApplicationContext

image.png

BeanFactory

BeanFactory 是所有容器的根接口,也是 Spring 提供的最简单的 IoC 容器,它提供了配置框架和基本方法

注意: BeanFactory 默认采用懒加载(lazy-load)机制

ApplicationContext

ApplicationContext是BeanFactory 接口的子接口,是对 BeanFactory 的扩展。

ApplicationContext添加了更多的企业特定的功能,所以通常用它代替BeanFactory

实现类 描述
ClassPathXmlApplicationContext(String configLocation) 加载类路径 ClassPath 下指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作
FileSystemXmlApplicationContext(String configLocation) 加载指定的文件系统路径中指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作

作者:倔强的牛角
原文链接:https://juejin.cn/post/7101674091748261924

上一篇下一篇

猜你喜欢

热点阅读