【2020Spring编程实战笔记】Spring开发分享~(上)

简介: 【2020Spring编程实战笔记】Spring开发分享~

00、spring框架绪论

曾经做开发的时候,我们用的框架比如 Struts2 Mybatis开发一个应用,用的非常单一,两者没有联系是独立起来的,现在学习 spring框架可以做到 Struts2+ spring+ mybatis中间的桥梁,进行整合联系糅合。我们把这个特点称为 轻量级解决方案

  • **特点:**将项目中的单层框架以最佳方式融合在一起。其实就是上述的。
  • 核心作用:

01、spring环境搭建

1.01spring依赖的导入

  • 我们不用spring最新版本,因为对jdk要求太高,我们选择spring 4.x版本即可。
  • 进入maven管理,搜索spring。

网址:https://mvnrepository.com/search?q=spring

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.3.20.RELEASE</version>
</dependency>

1.02生成spring框架的配置文件

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5UwH5fsR-1604408298799)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201027002244.png)]

1.03spring框架如何管理组件对象的创建

  • 看一下我们传统的对象是通过 new 出来的:

接下来我们要用bean来管理对象userDao

<!--
        1、bean作用:用来管理组件对象的标签。
        2、用来管理组件java类的全类名
        3、在工厂中生成组件对象的唯一标识
    -->
    <bean id="bb" class="day1.UserDaoImpl"/>

1.04启动工厂并在工厂中启动组件对象

package day1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpring {
    public static void main(String[] args) {
        //启动工厂
        ApplicationContext context=new ClassPathXmlApplicationContext("day1/day1.xml");
        //获取工厂中的对象,还要进行强制转换一下
        UserDao userDao = (UserDao) context.getBean("bb");
        //使用对象
        userDao.find("小明");
    }
}
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHRwDwWL-1604408298804)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201027010748.png)]

02、IOC和DI核心思想

2.1、IOC 控制反转 核心思想定义

  • IOC全称:invasion of controll翻译 反转控制,控制反转

以前做开发我们是手动new对象,我们想在哪个类创建对象就创建对象,主动权在我们手上,spring的核心就是:将我们的这个主动权剥夺了,我们创建对象的权利移交给了spring工厂,创建之前要通过 spring工厂来创建,相当于 权力下放

  • DI全称:dependcy injection翻译为 依赖注入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n32lPH0q-1604408298807)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201027135806.png)]

2.2、面试小概念:

03、set注入的语法

  • 一个依赖注入的实例:

项目结构图:

一个接口,一个实现类,一个测试类,xml配置文件。

studentImpl类:

package pojo;
public class StudentImpl {
    private String name;// 1、把依赖生成成员变量
    public void setName(String name) {// 2、生成一个set方法准备导入依赖
        this.name = name;
    }
    @Override
    public String toString() {
        return "StudentImpl{" +
                "name='" + name + '\'' +
                '}';
    }
}

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">
    
    <bean id="student" class="pojo.StudentImpl">
        <property name="name" value="令狐"/>生成对象,并赋值,就是依赖注入!
    </bean>
</beans>

测试类:

package pojo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class StudentTest {
    public static void main(String[] args) {
        //启动指定的工厂
       ApplicationContext Context = new ClassPathXmlApplicationContext("/init/init.xml");
        //拿取指定的对象
        StudentImpl student = (StudentImpl) Context.getBean("student");
        //打印返回
        System.out.println(student.toString());
    }
}


【2020Spring编程实战笔记】Spring开发分享~(下)+https://developer.aliyun.com/article/1621240

目录
相关文章
|
2月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
27天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
2322 40
|
2月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
382 0
|
3月前
|
Java API 开发者
Spring 控制反转与依赖注入:从玄学编程到科学管理
在传统开发中,手动`new`对象导致紧耦合、难以维护和测试。控制反转(IoC)将对象创建交给框架,实现解耦。Spring通过IOC容器自动管理对象生命周期,开发者只需声明依赖,无需关心创建细节。依赖注入(DI)是IoC的具体实现方式,支持构造器、Setter和字段注入。构造器注入推荐使用,保证依赖不可变且易于测试。对于多个同类型Bean,可用`@Qualifier`或`@Primary`解决冲突。此外,Spring还支持依赖查找(DL),开发者主动从容器获取Bean,适用于动态场景,但侵入性强。掌握IoC与DI,有助于构建灵活、可维护的Spring应用。
|
30天前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
1月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
Spring Boot 3.x 微服务架构实战指南
|
30天前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。
|
30天前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
3月前
|
人工智能 监控 安全
Spring AOP切面编程颠覆传统!3大核心注解+5种通知类型,让业务代码纯净如初
本文介绍了AOP(面向切面编程)的基本概念、优势及其在Spring Boot中的使用。AOP作为OOP的补充,通过将横切关注点(如日志、安全、事务等)与业务逻辑分离,实现代码解耦,提升模块化程度、可维护性和灵活性。文章详细讲解了Spring AOP的核心概念,包括切面、切点、通知等,并提供了在Spring Boot中实现AOP的具体步骤和代码示例。此外,还列举了AOP在日志记录、性能监控、事务管理和安全控制等场景中的实际应用。通过本文,开发者可以快速掌握AOP编程思想及其实践技巧。