Spring框架的介绍和IoC入门

目录

1.Spring框架介绍

[1.1 Spring 框架的概述](#1.1 Spring 框架的概述)

[1.2 Spring框架的优点](#1.2 Spring框架的优点)

2.SpringIoC

[2.1 什么是IoC?](#2.1 什么是IoC?)

[2.2 入门程序](#2.2 入门程序)

3.IOC技术总结


1.Spring框架介绍

1.1 Spring 框架的概述

Spring 是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的 松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由RodJohnson创建。简单来说,Spring 是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。 Spring 是于2003 年兴起的一个轻量级的Java开发框架,由RodJohnson在其 著作Expert One-On-One J2EEDevelopment and Design中阐述的部分理念和原 型衍生而来。 它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层 架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提 供集成的框架。 Spring 的核心是控制反转(IoC控制反转)和面向切面(AOP)。简单来说,Spring 是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

1.2 Spring框架的优点

1.方便解耦,简化开发,Spring就是一个大工厂,可以将所有对象创建和依赖关 系维护,交给Spring管理。

2.AOP 编程的支持,Spring提供面向切面编程,可以方便的实现对程序进行权限 拦截、运行监控等功能。(可扩展性)

3.声明式事务的支持,只需要通过配置就可以完成对事务的管理,而无需手动编程。

4.方便程序的测试,Spring对Junit4支持,可以通过注解方便的测试Spring程序。

5.方便集成各种优秀框架,Spring不排斥各种优秀的开源框架,其内部提供了对 各种优秀框架(如:Struts2、Hibernate、MyBatis、Quartz 等)的直接支持。

6.降低JavaEE API 的使用难度,Spring 对JavaEE开发中非常难用的一些API (JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

2.SpringIoC

2.1 什么是IoC?

IOC-- Inverse of Control,控制反转,将对象的创建权力反转给Spring框架!! 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计 原则,可以用来减低计算机代码之间的耦合度。 解决问题:使用IOC可以解决的程序耦合性高的问题!!Spring的工厂读取配 置文件。

2.2 入门程序

导入依赖:

XML 复制代码
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

创建UserService接口及其实现类:

java 复制代码
package com.qcby.service;

public interface UserService {

    void hello();

}
java 复制代码
package com.qcby.service.Impl;

import com.qcby.service.UserService;

public class UserServiceImpl implements UserService {
    @Override
    public void hello() {
        System.out.println("Hello IOC!");
    }
}

编写配置文件applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--IOC管理bean -->
    <bean id="userService" class="com.qcby.service.Impl.UserServiceImpl"></bean>
</beans>

测试方法:

java 复制代码
import com.qcby.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo1 {

    /**
     * 入门程序
     */
    @Test
    public void run1() {
        //使用Spring的工厂
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //通过工厂获得类
        UserService userService = (UserService) context.getBean("userService");
        userService.hello();
    }
}

运行:

流程:

导入Spring依赖(如spring-context)

编写接口与实现类

创建Spring配置文件

通过ApplicationContext获取Bean并调用方法

3.IOC技术总结

ApplicationContext接口,工厂的接口,使用该接口可以获取到具体的Bean对象。

该接口下有两个具体的实现类。

ClassPathXmlApplicationContext,加载类路径下的Spring配置文件。 FileSystemXmlApplicationContext,加载本地磁盘下的Spring配置文件。

相关推荐
时间静止不是简史4 小时前
生产事故排查:Redis 宕机导致补偿队列消费线程死亡,通话录音未上送业务平台
java·redis
2301_32241428047 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
金銀銅鐵9 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工9 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
念何架构之路9 小时前
go-grpc设计思想
开发语言·后端·golang
catoop10 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x10 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事10 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客11 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn18811 小时前
记录本地安装nacos服务的方法及异常
java·开发语言