spring 学习笔记1

spring的好处不用多说,无数的大中小企业都在用它。 万事开头难,从写一个spring控制台程序开始;第一步:搭配学习环境; 我在家使用的是MyEclipse6.5集成环境,并且MyEclipse6.5自带了jre, 所以连jre都不用安装了。在xunlei上有下载,但是如果你也使用MyEclipse,希望你可以明白为什么MyEclipse自带的jre可以工作。 新建一个web project, 名字就叫作springapp。 右键点击springapp,察看java buil…

Java项目不需要配置 jre环境运行、SpringBoot项目打jar包以及bat指定JRE启动

现在项目有需求,在不搭建环境的情况下用windows运行java项目。于是在网上找了下教程,发现很简单。整理一下分享给大家: 1、我用的用的idea 所以用maven中的install打包java项目(spring boot项目)、   打包jar文件在target目录下找到 将jar文件复制出来放到要打包的文件夹下,并且改名为 referee-v1.0(名字无所谓)   2、将java环境中的jre文件夹复制到打包文件夹下,并根据需要新建config、logs等…

Spring底层AOP的原理示例(JDK动态代理和cglib动态代理)

1 JDK动态代理(必须要有接口) 接口 package com.itykd.dao; public interface UserDao { void save(); void update(); void find(); void delete(); } 实现类 package com.itykd.dao.impl; import com.itykd.dao.UserDao; public class UserDaoImpl implements UserDao { @Override public void save() { System.out.println("UserDaoImpl的save方法执行了....."); } @Override public void update(…

Spring之JDK动态代理

第一步:接口和接口的实现类 //接口 package it.heima.service; import it.heima.domain.Product; public interface ProductService { public void add(Product product); public void delete(int id); } //接口的实现类 package it.heima.service.Impl; import it.heima.domain.Product; import it.heima.service.ProductService; public class ProductServiceImpl implements ProductService { @Over…

输出cglib以及jdk动态代理产生的class文件

好奇心重的小伙伴有一种知其然,亦欲知其所以然的特性,我们在spring事务应用中会接触到aop技术,而aop背后隐藏的恰恰是以jdk以及cglib为基础的动态代理技术,博主不才,将自己的学习历程记录于此,希望帮到有需求的同行,其实我们仅需要进行简单的设置,即可输出cglib以及jdk动态代理产生的class文件,然后使用jdt或者其他工具查看生成的动态代理类,以验证理论知识: System.setProperty(DebuggingC…

ComponentScanBeanDefinitionParser are only available on JDK 1.5 and higher出现原因以及解决方法:

1、环境:Windows10+sts+jdk1.8+spring.2.5.6 2、出现这种问题的原因:spring.2.5.6.jar不支持jdk1.8,只支持jdk1.6和jdk1.7(jdk1.5支持不支持没做测试,我也不知道。。。) 3、这种问题出现的场景:在做spring相关的Junit测试时,发现配置注解扫描后,进行单元测试时报错,针对这种情况网上也是查找了好多资料,给的建议是:①把jdk的版本从1.8降为1.7或者1.6,②把spring.2.5.6的jar包换成高版本的包,经…

Java JDK代理、CGLIB、AspectJ代理分析比较

JDK动态代理小结 现在我们对JDK代理有个简单的源码级别的认识,理清楚一下思路:JDK会帮我们在运行时生成一个代理类,这个代理类实际上就是我们需要代理的接口的实现类。实现的方法里面会调用InvocationHandler类中的invoke方法,并且同时传入自身被调用的方法的的Method对象和参数列表方便我们编码实现方法的调用。比如我们调用reduce方法,那么我们就可以通过Method.Invoke(Object obj, Object... args)…

Spring—AOP两种代理机制对比(JDK和CGLib动态代理)

Sprign 动态代理机制 Spirng的AOP的动态代理实现机制有两种,分别是: 1)JDK动态代理: 具体实现原理: 1、通过实现InvocationHandlet接口创建自己的调用处理器 2、通过为Proxy类指定ClassLoader对象和一组interface来创建动态代理 3、通过反射机制获取动态代理类的构造函数,其唯一参数类型就是调用处理器接口类型 4、通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数参入 JDK动态代理…

Spring 3.x与jdk 1.8兼容性的问题

手头有一个老的系统,基于spring 3,别人机器上装的是jdk 1.7,启动正常,笔者机器上安装的是jdk 1.8,启动报类似下面错误:折腾老半天,原系统引入的是spring 3.2.10,换成了spring 3.2.18,启动正常。stackoverflow上也有人提出该问题:https://stackoverflow.com/questions/24128045/spring-context-initialization-failed-with-java-lang-illegalargumentexception-whi

JVM

内存管理子系统 运行时数据区域 程序计数器 java虚拟机栈——每个方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方 法出口等信息。 本地方法栈 java堆——在虚拟机启动时创建,用于存放对象实例,但随着JIT编译器的发展和逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生。另一方面,从内存分配的角度,线程共享的java堆中可能划分出多个线程私有…

基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存、CPU、缓存等予以说明。实际上,在实际的Java开发工作中,仅仅了解并发编程的创建、启动、管理和通信等基本知识还是不够的。一方面,如果要开发出高效、安全的并发程序,就必须深入Java内存模型和Java虚拟机的工作原理,从底层了解并发编程的实质…

jvm疯狂吞占内存,罪魁祸首是谁?

导读 JVM是Java Virtual Machine的缩写,中文名为Java虚拟机。它是一种用于计算设备的规范,是一个虚构出来的计算机,主要通过在实际的计算机上仿真模拟各种计算机功能来实现的。在实际运用过程中,易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......   现象:前段时间发现某台开发机上各个微服务进程占用内存很高,这里记录下解决思路,仅供参考。 Centos6.10+Jdk1.…

JVM难学?那是因为你没认真看完这篇文章

一:虚拟机内存图解 JAVA程序运行与虚拟机之上,运行时需要内存空间。虚拟机执行JAVA程序的过程中会把它管理的内存划分为不同的数据区域方便管理。 虚拟机管理内存数据区域划分如下图: 数据区域分类: 方法区: (Method Area) 虚拟机栈 : (VM Stack) 本地方法栈 : (Native Method Stack) 堆: (Heap) 程序计数器: (Program Counter Register) 直接内存 : (Direct Memory) 说明: 程序计数器 行…

springMVC学习(基于注解的MVC)

今天这篇博客给大家带来基于注解的springMVC开发,大家之前有没有想过一个问题,就是我们之前基于配置文件配置写出来的那些Controller只能默认处理一个方法,那么我如果想像structs2那样子来让一个Controller可以处理多个请求,对于不同的请求,跳转进不同的方法来做处理,这样是极好的,springMVC基于注解的开发,就可以完成上边的这些需求,下面我们看一个例子。 添加jar文件 首先我们需要添加需要…