Spring随笔
文章平均质量分 59
老马回头不吃草
菜鸡
展开
-
从Spring源码解析事务失效问题-调用同一个类方法失效
在讨论Spring中事务失效问题前请参考Spring代理文章 Spring设计模式-代理模式 1,首先明确一点 在开启事务后,从Spring中获取的对象是代理对象ProxyFactory并不是UserService对象 public class ProxyFactory{ private UserService target; public ProxyFactory(Object target){ this.target=target; }原创 2021-04-25 23:17:33 · 209 阅读 · 0 评论 -
SpringCloud搭建完整项目的过程一
第一步:创建EurekaServer 注册中心 1,使用String Initializr 创建一个空项目,用来统一管理EurekaServer,EurekaClient 2,右键创建EurekaServer 子模块module 选择EurekaServer 组件 删除没用的文件 3,配置pom 让store统一管理子模块 store.pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns.原创 2021-04-07 22:19:03 · 736 阅读 · 1 评论 -
Spring设计模式-代理模式
java的三种代理模式: 静态代理 动态代理 Cglib代理 静态代理 定义接口 public interface Vehicle { void run(); } 定义委托类 public class Bicycle implements Vehicle { @Override public void run() { System.out.println("自行车在跑...."); } } 定义代理类 /** * 代驾 代理对象 * 使用聚合方式 生成代理对象 */ public原创 2020-07-23 10:26:44 · 109 阅读 · 0 评论 -
Spring5.1源码阅读记录二 - 一步步看bean是如何被创建起来的
DefaultListableBeanFactory DefaultListableBeanFactory继承图如下所示: 其中 AliasRegistry:定义对alias的简单增删改等操作 SimpleAliasRegistry:缓存别名bean名称到Map中 SingletonBeanRegistry:单例Bean的注册于获取方法 BeanFactory:定义获取bean和bean的各种属性 DefaultSingetonBeanRegistry:SingletonBeanRegis原创 2020-07-10 17:38:12 · 304 阅读 · 0 评论 -
JAVA数据结构-HashMap
在工程中HashMap使用的非常频繁,甚至有人说如果只能选择一个的话我选HashMap。那今天来回顾一下HashMap. HashMap什么 首先HashMap继承自Map<>接口,Map接口的定义了一些方法,比较简单,不说了 先来看HashMap是如何实现的: 简单点说HashMap就是一个数组,数组的元素对应着一个链表,当链表足够长时转换为二叉树。 首先由几个很重要的属性: static final int DEFAULT_INITIAL_CAPACITY = 1 &.原创 2020-05-20 18:02:14 · 108 阅读 · 0 评论 -
JAVA是如何运行的五-synchronized
书接上回原创 2020-05-19 08:27:12 · 147 阅读 · 0 评论 -
JAVA是如何运行的四-对象布局
首先说明为什么要学习java的对象布局? 当对一个代码块加锁的时候,刚学习java的时候认为是锁的代码,其实这样理解是不对的。看下面代码其实锁的是一个LayoutClass对象!那底层是怎么实现的呢? public static void add(){ synchronized (LayoutClass.class){ i++; } } 首先需要一个工具:看对象布局的依赖文件 <dependency&g原创 2020-05-11 17:59:13 · 137 阅读 · 0 评论 -
JAVA是如何运行的四-voliate
综合上篇文章的代码一的说明 如果我们使用voliate关键字修饰flag会出现什么效果 public static volatile boolean flag = false; public static void main(String[] args) throws InterruptedException { new Thread(new Runnable() { @Override public void run() {原创 2020-05-09 15:47:34 · 323 阅读 · 0 评论 -
JAVA是如何运行的三线程模型
JVM线程模型 根据上述两篇文章的说明,大概知道jvm是如何分配内存并且运行起来的。 现在我们来看既然对于JVM的内存模型来说,方法区和堆是线程共享的 但是对于jvm栈,栈帧,计数器等是线程独享的,很显然,当两个线程如果同时操作方法区中的静态变量n,为什么会产生并发问题?那如何解决并发问题? 首先来看下JVM的线程模型 首先为什么线程模型会长这个样子? ...原创 2020-05-08 17:37:37 · 226 阅读 · 0 评论 -
JAVA是如何运行的二JVM模型
综上篇介绍,下面来详细讲解java代码的执行结果 首先看源代码 ,通常当我们运行下面代码时,我们会认为虚拟器会创建一个线程,从main方法开始执行。然后计算abc的值后开始调用getN()方法。 package com.company; public class Test1 { static int n = 5; public static void main(S...原创 2020-05-07 11:17:01 · 426 阅读 · 1 评论 -
JAVA是如何运行的一JVM模型
关于JAVA是如何运行的一直很模糊 今天来总结下 一,首先先理解几个基本概念: JDK(Java Development Kit),Java开发工具包,主要用于开发 JRE(Java Runtime Environment),Java程序运行的核心环境,包括JVM和一些核心库 JVM(Java Virtual Machine),VM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过...原创 2020-04-30 09:17:22 · 188 阅读 · 1 评论 -
Spring随笔之使用Idea创建SpringMvc项目Hello World
首先我们先使用配置文件的方式创建一个Spring项目。 大家在学习的时候不要图一时方便直接使用idea依赖maven一键式创建,那样其中的很多配置细节可能会注意不到,特别是对spring配置不熟悉的朋友,很不利于学习。而且希望在一次次创建spring的过程中希望每次都能提升对spring的认识。 好的言归正传,我这里使用的intellij idea创建spring项目。intellij ide...原创 2019-03-11 17:30:21 · 370 阅读 · 0 评论 -
Spring随笔之bean的注入方式
Spring最大的功能就是一个bean的管理,通过我们配置bean的方式将bean的创建和销毁权交给Spring容器处理。 什么是IOC?IOC就是原本需要我们主动创建(new出来)的对象交给容器去创建。 一,set方式注入 首先准备个bean; package com.oldma.spring.bean; public class Car { private String ...原创 2019-03-15 14:36:31 · 148 阅读 · 0 评论