- 博客(62)
- 资源 (45)
- 收藏
- 关注
原创 spring配置文件加载为BeanDefinition过程分析
1:写在前面在实际工作中,我可能经常写如下的代码:@Testpublic void testBeanDefinitionLoad() { // 定义资源 ClassPathResource classPathResource = new ClassPathResource("testbeandefinition.xml"); // 定义IOC容器 DefaultListableBeanFactory defaultListableBeanFactory = new De
2021-02-24 12:26:33
15
原创 Spring的统一资源加载策略
写在前面什么是资源呢?最基本的本地磁盘上的一个文件,远端某服务器的一个图片,本地的一个jar包,本地的一个jar包内的内嵌jar包/内嵌class文件/内嵌properties文件,这些都是资源,为了能够满足各种资源的读取,spring定义了统一的资源加载策略。1:Resource接口该接口在spring的spring-core模块中,完整类名org.springframework.core.io.Resource,该接口组要是用来抽象资源的定义的,最终资源会封装为该接口类型的一个对象,然后使用该对象
2021-02-21 14:09:49
17
1
原创 spring的主要模块及其提供的功能
1:spring-core1.1:资源的定义和加载其中资源的定义的接口为org.springframework.core.io.Resource。资源加载的接口org.springframework.core.io.ResourceLoader。
2021-02-21 09:04:21
13
原创 spring注入对象的几种方式
写在前面spring通过IOC容器帮我们管理了对象,但是管理的这些对象,当我们需要其中一个或者是多个的时候应该怎么样获取呢,这就和对象注入有关系了,通过注入,我们可以从spring容器中反向被动的获取对象,然后就可以使用这些对象的能力来完成我们的任务了。1:setter方法注入1.1:定义注入的类public class MyDao {}1.2:定义被注入的类public class MyAction { private MyDao myDao; public MyDao
2021-02-19 19:27:39
10
原创 springboot的自动配置类是如何完成过滤的
写在前面入口在org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#filter
2021-02-05 19:01:19
43
原创 springboot如何通过profile加载不同bean
1:定义bean类@Configurationpublic class ProfileTestConfiguration { @Bean @Profile(value = "dev") public MyProfileBean devProfileBean() { return new MyProfileBean("dev profile"); } @Bean @Profile(value = "test") public M
2021-01-31 17:15:07
23
原创 springboot如何通过注解实现自动配置
SpringBootApplication源码如下:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilte
2021-01-31 16:03:48
8
原创 框架工具类使用
1:List转数组1.1:工具类org.springframework.util.StringUtils。1.2:使用实例private List<String> filter(List<String> configurations, AutoConfigurationMetadata autoConfigurationMetadata) { ... String[] candidates = StringUtils.toStringArray(configuration
2021-01-31 10:56:14
13
原创 java如何获取类标记注解组合的其它注解
1:定义注解A@Retention(RetentionPolicy.RUNTIME)public @interface A {}2:定义注解B并使用注解A注解@A@Retention(RetentionPolicy.RUNTIME)public @interface B { }3:定义类并使用使用注解B注解@Bpublic class Cls {}4:获取Cls类所有的注解public class Main { public static void mai
2021-01-31 09:45:11
27
原创 springboot中常用的注解
1:@Inherited该注解的用法是:如果某个类使用了被@Inherited标注的注解,则该类的子类会自动继承该注解,及@Inherited的作用就是标记注解是否是可被继承的。分析如下:该注解源码如下:java.lang.annotation.Inherited@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATION_TYPE)public @interface Inherited {}从
2021-01-25 19:13:02
26
原创 在springboot中使用文件上传
1:springMVC文件上传介绍在springMVC的9大组件中,其中的一个就是MultipartResolver,即文件上传解析组件,该组件当是文件上传请求时会将HttpServletRequest类,解析生成为MultipartHttpServletRequest类,该类在继承了HttpServletRequest的同时,还实现了接口MultipartRequest,源码如下:public interface MultipartRequest { Iterator<String>
2021-01-24 20:56:27
43
原创 springMVC中的ModelAndView,Model,ModelMap
写在前面本文基于springboot环境来进行测试,没有这个环境的,可以参考这里,隔空????这位同学的用心总结。下面我们正式开始。1:整体分析先看下ModelAndView源码:public class ModelAndView { // 逻辑视图地址 @Nullable private Object view; // 数据 @Nullable private ModelMap model;}其中的Object view代表的就是视图,在jsp环境中
2021-01-24 11:44:41
19
原创 springboot环境中使用springmvc的验证器
写在前面本文基于springboot环境进行测试,如果还没有环境,可以参考这里。1:系统自带验证1.1:定义验证类public class ValidatorPojo { @NotNull(message = "id不能为空") private Long id; // 只能是将来的日期 @Future @DateTimeFormat(pattern = "yyy-MM-dd") @NotNull private Date date; @NotNull // 最小值0.1 @D
2021-01-23 11:34:39
23
1
原创 springmvc转换器converter的使用
1:写在前面页面传递的参数都是string,而在控制器中接收参数类型是不确定的,对于基础数据类型,springmvc已经提供了类型转换器,对于不支持的目标类型,例如日期类型,自定义的对象类型,则可以通过实现接口org.springframework.core.convert.converter.Converter接口的方法来实现,该接口定义如下:@FunctionalInterfacepublic interface Converter<S, T> { @Nullable T conv
2021-01-20 21:31:30
30
原创 xxljob在项目中的使用
1:下载源代码在这里下载源代码到本地,然后导入到idea,等待其构建完成,然后我们来切换到2.0.2版本进行后续操作。2:数据库操作2.1:数据库初始化将doc/db/tables_xxl_job.sql数据库脚本在数据库中执行即可完成数据库初始化的工作。2.2:修改db配置修改xxl-job-admin/src/main/resources/application.properties文件,将其中的db配置修改为自己本地的信息即可。3:启动这是一个标准的springboot程序,可以直接通
2021-01-02 10:05:46
83
原创 idea远程调试tomcat的web服务
1:使用的项目项目基于springboot,在这里下载源码后,直接打war包扔到tomcat,然后即可通过ip:port/appname/hello访问运行,下面呢我们正式开始。2:配置tomcat在catalina.sh中添加,如下内容:export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'如下截图是我配置的:配置完成后,将war包扔到tomcat,然后启动服务器,先测试启动
2021-01-01 11:52:10
21
原创 springboot的启动过程详细分析
入口入口很简单,就是我们的main程序,可能如下:@SpringBootApplicationpublic class HelloWorldMainApplication { public static void main(String[] args) throws URISyntaxException, IOException { SpringApplication.run(HelloWorldMainApplication.class, args); }}好
2020-12-29 12:08:51
95
原创 通过helloworld程序分析springboot的jar包启动过程
1:创建helloworld程序1.1:创建maven项目file->new->project,然后选择左侧的maven,选择jdk的版本为8,直接next创建。1.2:配置依赖<packaging>jar</packaging><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-
2020-12-03 19:13:25
38
原创 idea导入spring boot源码过程分析
写在前面环境win10(其他应该也可),idea2020-2(最好保持一致),jdk8+,maven3.5.4(最好保持一致)其他最好准备翻墙软件,因为可能部分依赖无法下载。1:下载源码从这里fork代码到自己的仓库中,fork的目的是为了可以直接方便的修改源代码,如果发现从git下载代码太慢,也可以将代码导入到gitlab中,然后再进行下载。大概导入到gitlab中过程可以参考以下几张图:完毕之后就可以git clone代码了。2:编译2.1:切换分支这里我们使用tag:v
2020-11-20 11:40:56
95
2
原创 mycat的安装到简单使用hello world
写在前面环境:centos6,jdk8,mycat1.6,mysql5.6。1:安装jdk略2:安装mysql2.1:下载在这里下载安装包。2.2:安装创建mysql的用户和组groupadd mysqluseradd -g mysql mysql解压到/usr/localtar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz -C /usr/local将解压后的文件命名为mysql在/etc下创建my.cnf[mysq
2020-11-01 11:51:22
40
原创 简单说明windows下安装nginx
写在前面环境:win10,nginx1.8.1。1:下载安装1.1:下载在这里下载安装包。1.2:解压解压到自定义的目录即可。2:配置和测试2.1:配置因为nginx默认监听的是80端口,该端口一把会被使用,所以修改nginx.conf下的listen 80;修改为listen 99;,修改后如下: server { listen 99; ... 2.2:启动D:\program_files\nginx-1.8.1\nginx-1.8.1>s
2020-10-30 15:10:50
31
原创 简单分析windows安装redis
1:下载在这里下载安装包。2:解压直接解压到某个目录就可以了。3:临时服务方式启动这种方式可以快速启动,但是不会添加到系统的服务中。3.1:启动D:\program_files\Redis-x64-2.8.2402>redis-server.exe redis.windows.conf _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 2.8.2402 (0
2020-10-28 10:31:19
19
原创 window查找端口占用并杀死进程
1:首先找到端口进程这里以端口号1099为例说明。C:\Users\Administrator>netstat -ano | findstr "1099" TCP 0.0.0.0:1099 0.0.0.0:0 LISTENING 17412 TCP [::]:1099 [::]:0 LISTENING 17412可以看到占用的进程号是17412。
2020-10-27 17:30:08
50
原创 windows安装navicat
在这里现在下载,下载完毕后使用文件navicat111_premium.exe完成安装,安装成功后,先不要打开软件,直接双击PatchNavicat.exe文件完成激活即可!
2020-10-26 15:28:50
87
原创 springcloud之zuul小栗子
写在前面源码这里。阅读本文准备本文在这篇博文基础上继续分析。本文会创建一个zuul的网关服务,调用之前博文中创建的服务。1:创建my-service-zuulnew->module,后续按照提示录入gav等信息,选择maven,java8等后finish即可,finish当前项目模块结构如下图:2:设置parent<parent> <groupId>dongshi.daddy</groupId> <artifactId
2020-10-25 12:10:12
14
原创 springcloud之feign小栗子
写在前面本例在这篇博客基础上进行讲解。再贴下图,回顾下当前的架构:当前有一个端口号为8671的eureka的服务端实例,端口号为8672,8673的eureka客户端相同应用的两个实例,端口号为8674的ribbon的eureka的客户端实例。这里我们再添加一个模块my-service-feign基于feign的方式来调用myeureka-client的服务。1:创建my-service-ribbon1.1:创建项目new->module,选择Spring Inilializr以及java
2020-10-23 17:17:17
23
原创 springcloud之ribbon小栗子
写在前面本文在这篇博文基础上继续进行分析。这里我们需要增加一个新的maven模块my-service-ribbon,通过my-enreka-server拉取服务注册信息,然后调用myeureka-client的接口。1:创建my-service-ribbon1.1:创建项目new->module,选择Spring Inilializr以及java8,然后next,录入gav等信息,创建完成后如下图:1.2:设置parent<parent> <groupId>d
2020-10-23 15:28:17
39
原创 springcloud之eureka小栗子
写在前面本例采用maven的模块项目进行说明。1:项目结构说明由以下三个项目构成:myeureka:作为父项目my-enreka-server:作为eureka服务端myeureka-client:作为eureka客户端2:创建父项目myeureka2.1:创建项目new-project,选择左侧的Maven:然后输入GAV,finish后删除src因为是作为父项目所以不需要源代码目录,最后只保留pom.xml。2.2:设置springboot的parent的starter的pom
2020-10-23 11:27:35
57
原创 springboot整合swagger小栗子
1:POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.
2020-10-22 14:32:03
29
原创 springboot整合jpa小栗子
1:POM<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0
2020-10-21 19:16:19
30
1
原创 springboot通过profile设置配置文件
写在前面本文直接在以后springboot项目基础上测试,关于如何创建springboot项目,点击这里。1:格式说明application-{profile}.yml,或者是application-{profile}.properties也可以。2:通过修改配置文件2.1:准备配置文件application.propertiesapplication-dev.propertiesapplication-test.properties其中application-test.properti
2020-10-21 14:58:40
90
原创 springboot的入门小栗子
1:创建项目new->project然后选择左侧Spring Initizlizr:录入gav等信息:然后next,springboot选择2.2.10版本,依赖选择spring-web:然后next->finish,最终项目结构如下:
2020-10-21 10:55:50
32
原创 springMVC的handler都有哪些类型
1:@ReqeustMapping这是当前我们使用最多的一种方式,是以方法作为handler,可能定义如下:@Controller@RequestMapping("/test")public class FileUploadController { @RequestMapping("/file-upload") public ModelAndView upload(@RequestParam(value = "file", required = true)MultipartFile file,
2020-10-19 09:54:21
90
原创 BeanNameUrlHandlerMapping类介绍
1:介绍该类用于维护比如实现了org.springframework.web.servlet.mvc.Controller接口的类型的handler。关于维护使用如@RequestMapping定义的handler的Mapping可以参考[这里],(https://blog.csdn.net/wang0907/article/details/108960496)。另外从其名称中也能看出来,这是一个使用BeanName作为url的mapping。2:初始化2.1:入口先看下BeanNameUrlHan
2020-10-18 16:56:49
68
3
原创 springboot优化JVM参数
写在前面参考的这里,此处只是为了记录,以防在工作中需要使用到。1:在idea中配置1.1:参数-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC11.2:设置方式在Configuration->VM options中设置即可,如下图:2:启动jar时指定java -jar -
2020-10-17 16:34:01
56
原创 idea中常用的插件以及简单实用
1:.ignore插件注意该插件包含了常用的ignore文件生成功能,这里我们只是用到git的ignore。1.1:下载在这里下载插件,注意要和自己的idea版本匹配(通过Help->About)查看版本,比如我下载的是如下的2.6.2版本的idea插件。1.2:安装File->Setting->Plugins:选择Install plugin from disk...:安装后:1.3:使用创建java的.gitignore我的idea不知道哪里问题,gen
2020-10-15 19:46:40
164
2
springboot-helloworld202010211506.zip
2020-10-21
Win64OpenSSL-1_0_2u(win10可用)
2020-10-30
xxl-job-handler.zip
2021-01-02
springboot+hibernate+mysql简单例子
2017-09-06
apache-tomcat-7.0.14-src.zip
2019-06-13
Spring Boot实战
2017-09-20
Android Smart ImageView
2016-02-27
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝