Spring 入门

Spring快速入门 引言 最近几天一直在忙着学习数据结构和算法,关于JavaEE的框架也有一阵子没更新了。那么今天就来聊一聊Spring框架吧,针对该框架写一篇快速入门的文章。 Spring简介 Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分J... 阅读详情

idea spring 入门依赖注入,idea 创建空项目添加多个 moudel

参考:Spring学习(1)——快速入门 - 我没有三颗心脏 - 博客园 (cnblogs.com)

spring-01 依赖注入

依赖注入理解:不通过 new Object() 的方式获取对象的实例,只需要声明对象,对象的实例化通过 spring 框架自动实例化后注入,也就是 dependency inject (依赖注入)

思路

  • 添加 spring 核心依赖
  • 在 spring 配置文件中设置实例化对象的扫描包路径,指定那些类能够被自动实例化
  • 创建实例化对象,使用注解标明类,表示将通过 spring 依赖注入的方式获取类的实例对象
  • 在测试方法中,手动获取 spring 上下文对象,通过上下文对象获取类的实例对象,调用实例对象的方法

关键字:

@Component 声明是可以被 spring 自动实例化的类

@Autowired 表示类的属性的实例将通过 spring 进行插入

详细步骤

添加 spring 核心依赖

<dependencies>
    <!--spring 核心依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.3</version>
    </dependency>
    <!-- 测试框架 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
</dependencies>

在 spring 配置文件resouces\applicationContext.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
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 配置实例扫描的包路径,开发过程中也有将整个工程目录配置为扫描的路径 -->
    <context:component-scan base-package="org.ff"/>
</beans>

创建将要被自动实例化的类,该类使用 @Component 注解

package org.ff;

import org.springframework.stereotype.Component;

@Component
public class MessageService {
    public void MessageService(){
        System.out.println("MessageService....");
    }

    public String getMessage(){
        return "Hello World";
    }
}

MessagePrinter 持有 MessageService 的依赖,通过为 messageService 属性添加 set 方法,并为该方法添加 @Autowired 注解,表示在自动实例化 MessagePrinter 的时候也会自动获取 messageService 的实例。

package org.ff;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessagePrinter {
    private MessageService messageService;

    @Autowired
    public void setMessageService(MessageService messageService) {
        this.messageService = messageService;
    }

    public void messagePrinter(){
        System.out.println("MessagePrinter...");
    }

    public void printMessage(){
        System.out.println("printer: " + messageService.getMessage());
    }
}

读取 spring 配置文件获取 context 上下文对象,获取对应类的实例对象。

package org.ff;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MessagePrinterTest {
    @Test
    public void printTest(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        MessagePrinter printer = context.getBean(MessagePrinter.class);
        printer.messagePrinter(); // 实例化成功,方法调用成功
        printer.printMessage(); // 持有的依赖对象也成功被 di (dependency inject),调用持有对象的方法也成功
    }
}

运行结果

在这里插入图片描述

spring-02 idea 添加 moduel

idea 空项目 + 多 moduel 工程结构的创建与还原;idea 工程多个 module,并且多个module 位于工程的一级结构。

创建工程

效果展示:

工程结构

在这里插入图片描述
目录结构

在这里插入图片描述
步骤:

1,idea 创建空项目

在这里插入图片描述
2,创建空项目之后添加 module

在这里插入图片描述
在这里插入图片描述
3,git 上传忽略工程文件

# 忽略自身
.gitignore
# 编译目录
target/
# idea 缓存文件
/.idea/
*.iml

注意:创建空项目之后不添加 module,会将空项目创建为默认的 module,之后添加的 module 都会放在默认的 module 目录下。如果出现该情况,需要先将默认 module 删除再添加新的 module。

还原工程

github/gitee 上clone下的工程由于没有工程文件导入之后会找不到 module,需要修改一下 project structure

clone 下来的项目

在这里插入图片描述
idea 导入之后工程结构(不符合预期)

在这里插入图片描述
步骤:

1,将自动创建的默认 module 删除

在这里插入图片描述
2,将 module 依次导入

在这里插入图片描述
3,导入 module 的过程中选择 module 的创建模板(根据 moduel 原本创建的模板选择)

在这里插入图片描述
4,导入之后工程结构就恢复正常

在这里插入图片描述

gitee地址 : https://gitee.com/springff/spring

【nnUNetv2进阶】三、nnUNetv2 自定义网络-发paper必会 对于很多朋友来说,找到nnunet的网络结构位置的代码可能比较困难,因为nnunet的网络结构从else:代码中没有网络结构的类名,那么使用的网络是哪个呢?打开预处理后的数据集中的nnUNetPlans.json文件,如下图,configurations里面有2d、3d_fullres等,这些表示nnunet的模型,下面的network_class_name指的就是训练使用的模型结构,一般都是PlainConvUNet。 阅读详情

相关推荐

嵌入式设备系统日志记录及调试技巧_嵌入式日志系统(1),如何成为杰出的程序员

这里面我使用的芯片为哈弗体系,全局常量存储编译器默认分配在flash,需要注意如果使用片内flash时,注意存储调试等级的flash块不要与代码区重合,要不然修改调试等级擦除flash块同时PC指针指向当前块的代码区,会导致仪器死机;这个也是之前用的比较多的,以上代码是模仿linux 内核的写法,可以比较好的做到日志信息分层,编译时相加对应的编译开关即可。但有个弊端就是,切换debug等级时,需要重新编译且需更新固件,而嵌入式设备出现异常后更新固件往往复位后,故障有时很难复现,调试起来比较浪费时间。

2401_84240431的博客 1294

SpringBoot - 如何解决多模块依赖时BEAN无法注入的问题?

在实际的项目中会存在一个项目包含多个模块的情况,而多个模块之间又存在着依赖关系,如何设置才能让多个模块在主模块启动时全部加载到Spring容器中呢?

记录并分享 4712

【电击防护篇】电击防护技术详解:从人体效应到接地系统全解析

本文系统讲解了电击防护的关键知识,包括电流对人体的影响(如30mA是心室颤动阈值)、人体电阻特性(700Ω-6100Ω)以及电气接触防护措施。重点分析了TT、TN和IT三大接地系统的结构特点与应用场景,强调TN-S系统最安全,IT系统供电连续性最佳。详细介绍了漏电保护器(RCD)的工作原理与选型指南,建议人身防护选用30mA高灵敏度RCD。文章通过对比表总结三大系统的安全性、成本及适用场景,为电气安全设计提供实用参考。

2301_81299416的博客 1743

SpringBoot 多模块依赖 Bean 无法注入

文章目录1. 关于 SpringBoot 自动注入及组件扫描2. SpringBoot 中的 @ComponentScan3. SpringBoot 中的 @SpringBootApplication4. 多模块注入示例一5. 多模块注入示例二6. 参考文档 1. 关于 SpringBoot 自动注入及组件扫描 在平时使用 Spring Boot 时,常常会使用到@Configuration、@Contoller,@Service,@Component等注解,被添加这些注解的类,在 SpringBoot

一线大码 8947

实战篇(一):从零构建领域知识图谱——基于Protege的本体建模与知识表示

本文详细介绍了如何从零构建领域知识图谱,重点讲解了基于Protege的本体建模与知识表示方法。通过游戏和电影领域的实战案例,展示了类层次结构设计、属性关系定义、推理验证等关键步骤,帮助读者掌握知识图谱构建的核心技术。

weixin_42613501的博客 482

Lumerical-定向耦合器1

概述:本文章使用FDE求解器对定向耦合器进行了数值仿真,讨论了耦合器的间距相关性,耦合长度相关性,波长相关性。讨论了脊形波导和条形波导两种情况。

m0_61776728的博客 4614

SpringBoot+maven多模块依赖注入失败的原因

重点:主要是因为在启动AdminWeb模块时,@SpringBootApplication注解会扫描AdminWebApplication当前包及其子包,当maven包引入了,使用@Autowired时,未正确扫描时,会提示,该类不能直接依赖注入。模块AdminWeb:AdminLoginController.class。模块AdminLogin:AdminLoginService.class。这样就扫描不到AdminLogin模块的文件了,需要手动指定扫描包。SpringBoot+Maven多模块环境,

web18224617243的博客 1273

Android System Slice应用加载分析,及启用Slice后,锁屏日期第一次开机正常显示,但后面锁屏不显示问题分析

最近发现Android P上锁屏界面,日期不显示,发现从P开始后,出现了Slice来允许应用以模块化,可交互的方式,插入多个使用场景。Android P的system UI 也使用到了这一特性,表现为锁屏时间,日期,勿扰图标,闹钟等。 如何使用Slice 以System UI中KeyguardSliceView.java来说明它的使用方法 首先,我们打开System UI 的mk 文件,可以看到以...

qq_33595823的博客 3035

[译] 依赖注入在多模块工程中的应用

原文地址:Dependency injection in a multi module project 原文作者:Ben Weiss 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Mirosalva 校对者:JasonZ,wenny Plaid 应用中引入一个 DI 框架过程中我们学到的东西 总的来说,这不是一篇关于依赖注入的文章,也不是关于...

weixin_33751566的博客 285

ESP32与BH1750光照传感器结合使用的Web服务器案例

请注意,为了使代码正常工作,你需要将代码中的"你的WiFi网络名称"和"你的WiFi网络密码"替换为你自己的WiFi网络凭据。在代码中,我们首先导入了所需的库文件,包括Wire库用于I2C通信,BH1750库用于与光照传感器通信,WiFi库和WebServer库用于创建Web服务器。接下来,我们将编写一个Arduino代码来控制ESP32与BH1750的通信,并将读取到的光照强度值显示在Web服务器上。函数用于处理根路径的请求,其中我们读取光照传感器的值,并将其显示在返回的HTML页面中。

server_api196的博客 617

基于 InceptionNeXt 模块增强的 YOLOv8 模型:针对多尺度目标检测的改进与实现

modules.py。

know_F0727的博客 206

spring boot 多模块管理时,依赖注入bean失败

spring boot 多模块管理时,依赖注入bean失败的解决办法: 问题描述: 编码时没有错误,maven打包也没有问题,在运行时出现了异常,例如: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'cn.test.itobc.we

小徕虫的博客 1万+

自抗扰控制(ADRC)理论与工程实践:6.1 离散时间ADRC的推导

本文系统阐述了自抗扰控制(ADRC)的离散化方法,重点对比了前向欧拉法和基于零阶保持器(ZOH)的精确离散化两种方法。前向欧拉法计算简单但精度较低,稳定性受采样周期约束;ZOH法精度高但对大采样周期更鲁棒。文章详细推导了跟踪微分器、扩张状态观测器和控制律的离散形式,分析了采样周期选择的关键因素,为ADRC的数字实现提供了理论指导。

技术工作者 197

Spring入门第一讲——Spring框架的快速入门

Spring的概述什么是Spring据度娘所载: Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Exp

李阿昀的博客 14万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring框架入门

​本篇文章主要从**什么是spring**、**spring入门案例**、**spring创建对象的原理**等方面进行对spring入门的学习。

LYH2771994122的博客 1148

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Spring】创建一个Spring的入门程序

3、创建一个Spring的入门程序 简单记录 - Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)- Spring的基本应用 Spring与Spring MVC的关系Spring和Spring MVC两者名字类似,但是两者却有着本质的不同。Spring是一个巨大的容器,可以集成各种技术。Spring MVC是一个Web技术,Spring MVC可以集成到Spr...

渐若窥宏大的博客 1573

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring从入门到入土——快速上手Spring

HelloSpring 导入依赖 ​ 我们要想使用Spring,首先肯定要先导入其jar包,我们只需要在maven配置文件中加入响应的依赖,就会自动下载相应的依赖项, <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <group...

冢狐的私人空间 1336

【Spring基础3】- Spring的入门程序

Spring的入门程序——本章通过第一个 Spring 程序,实现了基于 XML 配置的方式实现 Spring 对 Bean 对象进行管理的操作。

weixin_44382896的博客 1735

Spring入门练习

入门小练习 闲话不多说,直接上代码 导入jar包 创建配置文件 文件命名:applicationContext.xml 导入约束 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww...

中二大帝的博客 204

Spring01 —— Spring快速入门

前言 SSM系列笔记,基于IDEA开发学习,对于自己来说写博客相当于一个云笔记,温故而知新,如果对于您有帮助笔者很开心也乐于分享所得。觉得有帮助的希望多三连支持😘 环境搭建 1、新建一个空项目 2、新建一个模块 选择maven项目 不使用骨架 3、构建web项目 4、修改项目路径 两个路径都要修改 一、Spring概述 1.1、spring是什么 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)

春和的博客 829

Spring 快速入门

Spring 快速入门 快速入门流程 下载Spring Jar包 1.1 直接在浏览器地址栏输入 https://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 下载某个版本 1.2 下载完成后解压,查看目录结构。 导入Spring核心开发Jar包到工程 2.1 下图是开发中需要用到的核心jar包 + 2.2 或者可以Maven引入 ``` <dependencies> &l

顾曲周郞的博客 202

Spring入门案例

Spring入门案例   1. 导入两个jar包(在spring-framework-2.5.6文件内)   (1)commons-logging.jar   (2)spring.jar   2.两个接口,两个实现类,一个测试类,一个配置文件  接口:AccountDaoIf.java,AccountServiceIf.java 实现类:AccountDao.java,Accoun

WhatIsNotNull的专栏 547

Educoder-Spring入门解答

大家如果喜欢就点个赞叭~~~关注更好❤(ง •_•)ง

amino_acid0617的博客 1373

Spring Boot开发入门

Spring Boot是基于Spring框架开发的全新框架,其设计目的是简化新Spring应用的初始化搭建和开发过程。Spring Boot整合了许多框架和第三方库配置,几乎可以达到“开箱即用”。Spring Boot 开发入门相对容易。首先,它简化了项目搭建,通过自动配置和 “Starter POMs” 快速构建起项目框架。其次,约定优于配置的理念减少了繁杂的配置工作。在开发中,可以方便地使用嵌入式服务器进行本地测试,无需额外安装外部服务器。配置文件管理简洁明了,方便调整各种属性。

2301_78803839的博客 1504
上一篇: Idea 配置 maven
下一篇: Spring Controller 打印入参/出参
springff
博客等级 码龄12年 9粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值