Spring学习思路和环境准备,准备入门的同学一定要来看看

【Spring Cloud】新闻头条微服务项目:环境搭建及框架准备 主要介绍基于Spring Cloud的文章类微服务项目的功能描述及开发前需要的环境、框架搭建过程。 阅读详情

我的学习思路

  • 装配方式 + 依赖注入
  • 设计理念
  • BeanDefintion scope beanClass lazy-init method constructor
  • BeanDefintionMap 注册 BeanFactoryRegistry
  • 注解如何解析,如何注册 BeanFactoryPostProcessor
  • beanFactory.getBean("user") singletonObject 单例对象池
  • bean的构建过程 new--属性填充--init
  • bean的循环依赖
  • beanPostPrecessor后置处理器的9次调用
  • AOP init的后置方法里调用的后置处理器
  • 声明式事务 MethodInterceptor
  • WEB DispatherServlet#doDispath
  • Spring扩展点 --IOC的扩展点:
    • BeanFactoryPostProcessor
    • beanPostPrecessor
    • @Import
    • ApplicationListener
    • SmartLiftCycle

这个是我准备的Spring的学习计划,当然也是老师给我的,Spring的源码我准备了一个多月了,还有挺多细节的东西还是无法掌握,但是大致的点都能够懂,总体上有个大致的框架思路。

环境准备

  • Spring Framework5.2
  • JDK1.8
  • IDEA2019.1.3
  • Maven3.6
  • Gradle4.10.2

整一套Sping的环境基础搭建就这几个,这些环境搭建细节就不一一说明,自行百度。具体构建Sping的环境可以留意我的上期的博客,期间的构建问题会出现很多不一样的问题,遇到问题可以留言,能解决的话可以帮你看看。

整体的环境

图片为gradle环境搭建成功,左侧会出现小蓝色的图标,右侧的模块会展示出现gradle图标。

新建learn-ioc5的模块

learn-ioc5的模块的用于后面Debug的测试模块,下面是搭建过程:

File->New->Module

Gradle->ModuleSDK->Java->Next

选择新建的模块为gradle,SDK就是本地的Java环境(前提是idea安装了gradle和jdk)

New Module

点击模块的继承

输入ArtifactId为learn-ioc5

等待完成构建,大约需要3到4分钟。会构建成功出现一个空的module。

创建完成后打开build.gradle, 引入依赖jar

compile(project(":spring-context"))

plugins {
    id 'java'
}

group 'org.springframework'
version '5.2.0.BUILD-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile(project(":spring-context"))
}

在src->main->java下新建好对应的包,目前我们用到的几个:

com.xuchang.bean

package com.xuchang.bean;


public class Fox {

}
package com.xuchang.bean;


public class Cat {

	public  Cat(){
		System.out.println("new Cat()");
	}
}

com.xuchang.config

package com.xuchang.config;


import com.xuchang.bean.Fox;
import com.xuchang.bean.MyImportBeanDefinitionRegistrar;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;


@Configuration
@Import(MyImportBeanDefinitionRegistrar.class)
@ComponentScan("com.xuchang")
public class AppConfig {

	// method bean   method.invoke
	@Bean
	public Fox fox(){
		return new Fox();
	}
}

·
MyImportBeanDefinitionRegistrar是我定义的BeanDefinition的注册器,未使用到的话可以去掉。

src->main->test->java


import com.xuchang.bean.Cat;
import com.xuchang.config.AppConfig;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


public class IOCTest {

	@Test
	public void test(){

		// ioc容器
		ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

		//NoSuchBeanDefinitionException
		// BeanDefinition   bean定义  承载bean的属性   init-method  scope
		// BeanDefinitionRegistry 注册器
		// registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
		// BeanDefinitionMap    key(beanName)  value: BeanDefinition(Fox.class)
		// beanFactoryPostProcessor
		BeanFactory beanFactory = ((AnnotationConfigApplicationContext) context).getDefaultListableBeanFactory();
		// 注册 Cat.class 的beanDefinition
		// 实现了 BeanDefinitionRegistry   BeanFactory
		BeanDefinition beanDefinition = new RootBeanDefinition(Cat.class);
		((DefaultListableBeanFactory) beanFactory).registerBeanDefinition("cat",beanDefinition);

		// singletonObjects   map 缓存单例bean  beanName---singletonObject
		Cat cat = new Cat();
		((DefaultListableBeanFactory) beanFactory).registerSingleton("cat",cat);

		System.out.println(context.getBean("fox"));

	}

}

总结

基本的环境和大致的流程都已经实现,运行测试类没有报错基本上Spring的环境已经准备好了。

后面留意:装配方式 + 依赖注入和设计理念

S4 HANA 1809+折旧过账(AFAB/AFABN)凭证行数据存储逻辑变迁:从BSEG到ACDOCA的深度解析 本文深度解析了S4 HANA 1809+版本中折旧过账(AFAB/AFABN)凭证行数据存储逻辑的变迁,从传统的BSEG表迁移到ACDOCA表。文章详细探讨了这一变更的技术背景、官方设计意图及实际影响,包括数据存储量减小和系统性能提升等优势。同时提供了升级项目的应对策略和最佳实践建议,帮助用户顺利过渡到新的数据存储模型。 阅读详情

相关推荐

ParallelsDesktop 安装 CentOS-6.9-x86_64-minimal 教程

安装参考 tools没做 想安装的可以参考这个 mac 本机环境: 系统:macOS Catalina version 10.15.6 虚拟机软件:parallels Desktop 15 for Mac( Parallels Desktop-15.1.4(47270)) Centos镜像: CentOS-6.9-x86_64-minimal.iso https://mirrors.aliyun.com/centos-vault/6.8/isos/x86_64/ http://vault.centos.

爱吃鱼的小明的博客 955

Spring学习思路和环境准备

Spring学习思路和环境准备 我的学习思路 装配方式 + 依赖注入 设计理念 BeanDefintion scope beanClass lazy-init method constructor BeanDefintionMap 注册 BeanFactoryRegistry 注解如何解析,如何注册 BeanFactoryPostProcessor beanFactory.getBean(“user”) singletonObject 单例对象池 bean的构建过程 new–属性填充–init be

HelloWorld! 433

博途的HMI(触摸屏)的应用

触摸屏(HMI):用于控制PLC,可认为是小型上位机(用于控制PLC的都可认为是上位机)上位机(PC Station):将触摸屏升级为电脑----工控机(工业控制的机器)用博途编写西门子的触摸屏和上位机。

王阿妹小天才的博客 2681

入门同学必看,你需要知道的Spring学习思路计划和环境基础搭建

我的学习思路 装配方式 + 依赖注入 设计理念 BeanDefintion scope beanClass lazy-init method constructor BeanDefintionMap 注册 BeanFactoryRegistry 注解如何解析,如何注册 BeanFactoryPostProcessor beanFactory.getBean("user") singletonObject 单例对象池 bean的构建过程 new--属性填充--init bean的循环依赖 b

duan18888的博客 212

Lora无线温湿度传感器方案

综上所述,Lora无线温湿度传感器以其长距离传输、低功耗、高稳定性、精准测量、无线传输以及广泛的应用场景等特点,在环境监测领域展现出了强大的竞争力和广泛的应用前景。Lora无线温湿度传感器广泛应用于各种需要远程监控和数据采集的场景,如仓储、农业、机房、楼宇、交通、工业、矿产、电力等领域。Lora无线温湿度传感器是一种采用Lora无线通信技术进行数据传输的温湿度监测设备。四、产品参数(以某款工业级Lora温湿度传感器为例)

weixin_46632654的博客 760

【控制模块路径跟踪算法】PID控制算法实现路径跟踪(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对PID控制算法实现路径跟踪–飞思卡尔的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容PID属于无模型控制,调节三个环节的参数会产生什么影响根据控制对象的不同也会有很大差别PID形象解释小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。

qq_35635374的博客 2389

Spring学习思路和环境准备,别一个人瞎琢磨了,直接给你整理好

我的学习思路 装配方式 + 依赖注入 设计理念 BeanDefintion scope beanClass lazy-init method constructor BeanDefintionMap 注册 BeanFactoryRegistry 注解如何解析,如何注册 BeanFactoryPostProcessor beanFactory.getBean("user") singletonObject 单例对象池 bean的构建过程 new--属性填充--init bean的循环依赖 b

JAVA88866的博客 102

Python爬虫实战:汽车之家车型参数与口碑数据抓取分析

在当今信息爆炸的时代,购车决策已从传统的4S店咨询转变为数据驱动的智能化过程。汽车之家作为国内领先的汽车信息平台,汇聚了海量车型参数、车主口碑和专业评测数据。本文将详细介绍如何使用Python最新爬虫技术构建一个高效、稳定的汽车数据采集系统,通过多维度数据分析辅助用户做出更明智的购车决策。本项目将采用异步爬虫、智能反爬绕过、数据清洗与分析等现代化技术栈,完整实现从数据采集到可视化分析的全流程。本文详细介绍了如何使用Python最新技术构建一个功能完整的汽车之家数据爬虫系统。

2201_76125261的博客 1490

【SpringBoot】从环境准备到创建SpringBoot项目的全面解析.

本篇博客介绍了SpringBoot开发环境的准备步骤,重点讲解了如何干净卸载并重新安装Idea,以及如何配置JDK17、Maven和SpringBoot。文章详细描述了卸载Idea的过程,包括删除注册表信息,并提供了Idea和JDK17的下载链接。接着,文章指导读者如何配置Maven,包括修改.m2路径、下载settings.xml文件,以及安装Maven Helper和Spring Initializr插件。

薯条不要番茄酱的博客 6242

华为OD机试 - TLV格式(Python/JS/C/C++ 2025 C卷 100分)

两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag,length,valueOffset)列表。和需要匹配的n个tag对应的n行匹配结果,每一行由长度和偏移量组成。第二行:需要匹配的tag数量n(0 < n < 1000)后面N行:需要匹配n个tag值(十进制表示),递增排列。标签10(0A)存在,长度3,valueOffset=2。标签15(0F)长度4,valueOffset=2。标签14(0E)长度2,valueOffset=8。

学Java,找哪吒 2042

【网络协议】【TSN】精讲TSN工作原理!图解超赞超详细!!!

TSN有一个服务等级(class of service,CoS)的概念。对TSN网络而言,不同优先级的服务对应图3中的PCP码。3位PCP码定义了0(最低)~7(最高)这8个优先级,传输类型分别对应基础、最大努力、卓越努力、严苛应用、延时和抖动小于100 ms的视频、延时和抖动小于10 ms的音频、内部网络控制、网络控制。其会对网络场景进行不同的匹配,是后续调度、配置设计中会考虑到的数据流调度因素。

风云说通信 2634

Spring 与 MVC 框架整合思路

整合 MVCMVC 框架整合思想为什么要整合 MVC 框架搭建 Web 运行环境Spring 整合 MVC 框架的核心思路1. 准备工厂2. 代码整合Spring 整合 Struts2 MVC 框架整合思想 为什么要整合 MVC 框架 MVC 框架提供了控制器(Controller)调用 Servlet DAO —> Service 请求响应的处理 接收请求参数 request.getParameter("") 控制程序的运行流程 视图解析(JSP、JSON、Freemarker、Thymeleaf

萌宅鹿的技术小屋 2098

基于PCL、Open3d、Easy3d 、VTK等常见开源库的QT开发

PCL+QT开发

阁楼 2万+

【Spring教程12】Spring框架实战:Spring整合Mybatis全面深入详解

学习到这里,已经对Spring有一个简单的认识了,Spring有一个容器,叫做IoC容器,里面保存bean。在进行企业级开发的时候,其实除了将自己写的类让Spring管理之外,还有一部分重要的工作就是使用第三方的技术。前面已经讲了如何管理第三方bean了,下面结合IoC和DI,整合Mybatis,进一步加深对Spring的使用理解。Mybatis的基础环境我们已经准备好了,接下来就得分析下在上述的内容中,哪些对象可以交给Spring来管理。在配置类中完成数据源的创建。》,本文的上一篇为《

rkmhr_sef的博客 1109

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring WebApplicationContext 准备刷新过程

Spring 框架WebApplicationContext 准备刷新的过程做了什么事情 ? 之前粗略的看了下Spring web这块初始化的过程,当时的重心是放在了容器的初始化过程,如果解析配置文件,以及如何初始化FactoryBean, 今天则是把重心放在了初始化过程中的一些小细节上。 下面看看问题的引出: 图为WebApplicationContext刷新的整个过程,但是今天

IT搬砖工在路上 1841

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring08——Spring整合MyBatis思路分析及实现步骤

Spring整合MyBatis思路分析及实现步骤

后端小白个人学习记录 1056

计算机控制技术及应用

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

Spring 整合 Mybatis -- Spring入门(七)

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。(博客的参考源码以及文章末尾链接的学习视频源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)(博客的参考源码以及文章末尾链接的学习视频源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

HHX_01的博客 1733

【Spring教程14】Spring框架实战:AOP入门案例实战详解

知识点1:@EnableAspectJAutoProxy知识点2:@Aspect知识点3:@Pointcut知识点4:@Before。

1097

java代码审计_Java代码审计| Spring框架思路篇

Java的WEB框架是Java进阶课程,当要进行Spring的漏洞分析,要有一定的Java代码知识储备。Java后端标准的学习路线:JavaSE->JavaEE->Java Web框架Spring是Java最核心,最重要的框架。0X01 审计环境准备当进行Spring的代码审计(Spring某一个组件包进行分析)时,首先要有相应Spring项目源码,要让没有编写代码经验的朋友从头编写一...

weixin_42365234的博客 1045

spring AOP详解

AOP(Aspect Orient Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程(OOP)的一种补充和完善;

是程序喵呀 4203

【Spring篇】Spring整合

一、一、在准备环境的过程中,我们也来回顾下Mybatis开发的相关内容Mybatis是来操作数据库表,所以先创建一个数据库及表项目的pom.xml添加相关依赖resources目录下添加,用于配置数据库连接四要素useSSL:关闭MySQL的SSL连接。

Javascript_tsj的博客 1万+

Spring11——AOP入门案例、AOP工作流程

AOP入门案例、AOP工作流程

后端小白个人学习记录 845

Spring 10 Spring 整合 10.1 Spring 整合Mybatis 思路分析 10.1.1 环境准备

Spring 10 Spring 整合 10.1 Spring 整合Mybatis 思路分析 10.1.1 环境准备

代码改变世界 327
上一篇: 想要彻底搞懂spring源码?首先你得先搞懂Spring IOC,安排
下一篇: 最新出炉,2022Java中高级面试208问
Javaesandyou
博客等级 码龄5年 742粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值