JAVA WEB创建笔记
文章平均质量分 57
springmvc、springboot、springcloud
csj50
这个作者很懒,什么都没留下…
展开
-
Java web项目创建笔记
一、springmvc4.x1、创建一个Java webapp的maven项目,maven模板quickstart和webapp的区别 --> https://blog.csdn.net/csj50/article/details/882155662、引入Spring基础软件包和工具包 --> https://blog.csdn.net/csj50/article/details/............原创 2019-03-06 00:47:37 · 540 阅读 · 0 评论 -
springcloud项目创建笔记10 之《eureka集群部署》
1、添加三个配置文件application-eureka1.ymlspring: application: name: eureka-server1server: #端口号 port: 8010eureka: instance: hostname: localhost client: #是否将自己注册到Eureka Server registerWithEureka: true #是否从Eureka Server获取注册信息原创 2022-05-25 10:46:36 · 185 阅读 · 0 评论 -
springcloud项目创建笔记9 之《apollo客户端使用2》
简化下配置1、pom文件添加<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>2.0.0</version></dependency>2、/src/main/resources下添加apollo-env.properties原创 2022-05-24 20:42:52 · 338 阅读 · 0 评论 -
springboot项目创建笔记35 之《配置SSL》
1、springboot支持ssl,只需要在配置文件中添加:server: ssl: enabled: true #证书的路径 key-store: classpath:saas.p12 #证书密码 key-store-password: 123456 #秘钥库类型 key-store-type: PKCS12 #SSL协议 protocol: TLS原创 2022-03-01 14:55:24 · 1792 阅读 · 0 评论 -
springboot项目创建笔记34 之《配置druid监控页面》
druid数据库连接池自在监控,添加配置打开1、监控需要的配置项#配置监控统计拦截的filtersspring.datasource.druid.filters= stat,wall,slf4j#默认关闭了监控页面spring.datasource.druid.filter.stat.enabled= true#默认关闭了监控页面spring.datasource.druid.stat-view-servlet.enabled= truespring.datasource.druid.st原创 2022-01-28 16:54:30 · 2565 阅读 · 0 评论 -
springboot项目创建笔记33 之《初始化资源》
以前用springmvc时,程序初始化资源用@PostConstruct注解和ApplicationContextAware接口。springboot提供了一个新接口可以实现这个功能,就是CommandLineRunner接口。比如程序启动后,进行数据库资源的初始化、redis缓存的初始化等。拿bean生命周期中的例子加上这个接口测试https://blog.csdn.net/csj50/article/details/107975473package com.example.base;i原创 2022-01-28 14:38:37 · 2992 阅读 · 0 评论 -
springboot项目创建笔记32 之《配置文件密码加密》
1、pom文件添加依赖<!-- 配置文件密码加密工具 --><dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version></dependency>2、application原创 2021-12-28 14:34:32 · 847 阅读 · 0 评论 -
springboot项目创建笔记31 之《maven-assembly-plugin打包,二进制文件损坏问题》
1、问题:一个项目发现打包后,static目录下的字体、图片都无法使用,对比了打包前和打包后文件大小:可以看到左边打包后,大小明显变大。2、原因是assembly.xml设置了:<filtered>true</filtered><fileSets><!-- 将代码目录/src/main/resources下的文件,复制到输出目录的config内 --><fileSet> <directory>${basedir}原创 2021-11-12 16:07:17 · 1076 阅读 · 0 评论 -
springboot项目创建笔记30 之《发送邮件服务》
1、pom文件添加依赖<!-- 邮件发送 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>2、添加邮件服务类MailService.java建立包:com.example.mailpackage com.e原创 2021-11-03 15:27:52 · 206 阅读 · 0 评论 -
springboot项目创建笔记29 之《springboot打包优化2—加载logback.xml问题》
打包优化分离配置文件后,服务器部署时logback.xml加载有问题。问题就是,在ide中需要设置classpath路径,服务器部署需要设置file路径以下都是在服务器上部署的加载测试一、设置成classpath1、classpath:./config/logback.xml启动报错:Logging system failed to initialize using configuration from 'classpath:./config/logback.xml'java.io.Fil原创 2021-09-09 10:34:01 · 2140 阅读 · 0 评论 -
springboot项目创建笔记28 之《redis分布式锁》
一、添加工具类RedisLockUtil.javapackage com.example.utils;import java.util.Arrays;import java.util.concurrent.TimeUnit;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import o原创 2021-09-08 20:09:28 · 202 阅读 · 0 评论 -
springboot项目创建笔记27 之《springboot打包优化》
由于springboot项目一般是以jar包形式运行,默认是将依赖的jar包一起打包到程序中,部署时传输的文件比较大。所以我们可以将程序的jar包、lib库、配置文件分离开来,方面升级部署。一、用到的插件1、spring-boot-maven-plugin插件这个是springboot的插件,会将项目所有的依赖打入BOOT-INF/lib2、maven-jar-plugin插件打包时分离程序和依赖包3、maven-dependency-plugin插件将依赖包复制到lib目录下3.原创 2021-09-07 14:39:06 · 633 阅读 · 0 评论 -
springboot项目创建笔记26 之《自定义starter包》
1、命名规则官方starter包:spring-boot-starter-xxx第三方starter包:xxx-spring-boot-starter2、starter包用到了springboot自动装配功能参考druid-spring-boot-starter-1.1.21.jar,建立一个starter的maven项目:sms-spring-boot-starter3、制作starter包,有两种方式方式一:像druid一样全部写在一起,编译出一个jar包方式二:像pagehelper原创 2021-09-06 15:12:43 · 519 阅读 · 0 评论 -
springboot项目创建笔记25 之《集成redis集群哈希槽》
1、配置文件中添加#redis集群配置spring: redis: database: 0 password: cluster: #加入所有redis节点 nodes: 72.19.12.191:6381,72.19.12.191:6382,72.19.12.191:6383,72.19.12.191:6384,72.19.12.191:6385,72.19.12.191:6386原创 2021-07-26 13:58:55 · 462 阅读 · 0 评论 -
Java web项目创建笔记30 之《利用AQS手写一把锁》
和CAS的区别:CAS是不断地去重试,而AQS是放入队列中,释放锁时唤醒其他线程1、在包com.study.base.util下,添加AqsTryLock.javapackage com.study.base.util;import java.util.concurrent.ConcurrentLinkedDeque;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.LockS原创 2021-07-07 22:18:40 · 144 阅读 · 0 评论 -
Java web项目创建笔记29 之《利用CAS手写一把锁》
1、CAS无锁机制原理(无锁指不是竞争去抢)1)定义一个锁的状态2)状态值=0,则表示没有线程获取到该锁3)状态值=1,则表示有线程已经持有该锁实现细节:2、CAS获取锁的流程:将该锁的状态从0改为1能够修改成功,则表示获取锁成功如果获取锁失败,则不会阻塞而是通过循环(自旋来控制重试)3、CAS释放锁的流程:将该锁的状态从1改为0如果能够修改成功,则表示释放锁成功4、如果一直获取锁失败,一直在做自旋,非常消耗cpu资源所以要给它做个次数限制,最多自旋10次5、在包com.stud原创 2021-05-04 21:32:39 · 201 阅读 · 0 评论 -
Java web项目创建笔记28 之《手写线程池》
1、原理线程池核心点----复用机制1)提前创建好固定的线程一直在运行状态----死循环实现2)提交的线程任务缓存到一个并发队列集合中,交给正在运行的线程执行3)正在运行的线程从队列中获取该任务执行2、在com.study.base.threads下添加MyThreadPool.javapackage com.study.base.threads;import java.util.ArrayList;import java.util.List;import java.util.co原创 2021-04-24 23:17:07 · 157 阅读 · 1 评论 -
springboot项目创建笔记24 之《添加拦截器后影响swagger访问》
1、添加了拦截器后,访问swagger页面http://localhost:8088/swagger-ui.html变成空白:2、因为拦截器是拦截所有的请求 @Override public void addInterceptors(InterceptorRegistry registry) { // 注册RateLimitInterceptor拦截器 // 要注意这里使用this.rateLimitInterceptor() InterceptorRegistration .原创 2021-03-29 17:49:18 · 372 阅读 · 0 评论 -
springboot项目创建笔记23 之《guava限流》
常见的限流工具有,guava限流和hystrix限流。他们的区别是,guava是服务的提供方防止自身因为请求过多崩溃而限流。hystrix是服务调用方防止后端业务响应异常,造成自身雪崩效应,进行熔断和降级处理。guava提供了令牌桶算法来实现限流,有没有发现redis也有一个令牌桶算法1、pom文件添加依赖<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</原创 2021-03-10 15:45:12 · 621 阅读 · 0 评论 -
springcloud项目创建笔记8 之《feign客户端》
在springboot中,我们使用restTemplate来发送http请求。而在springcloud中提供了feign客户端1、建立一个内部应用mycloud-inside-app1,提供controller调用测试:http://localhost:8015/insideApp1/remoteApi?id=123返回:hello:1232、添加依赖包需要修改mycloud-service-provider1和mycloud-service-provider2模块,下同<dep原创 2021-03-04 17:46:17 · 552 阅读 · 3 评论 -
springboot项目创建笔记22 之《spirng-session实现分布式session一致性》
spring-session组件可以自动将sessionId存入redis,解决分布式session一致性问题1、pom文件添加依赖<!-- spring session依赖 --><dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId></depen原创 2021-02-07 14:29:41 · 230 阅读 · 0 评论 -
Java web项目创建笔记27 之《整合dubbo》
dubbo是一个rpc框架,提供了远程方法调用的功能需要3个角色:注册中心、服务提供方、服务消费方注册中心:nacos服务提供方:dubbo-provider-demo服务消费方:dubbo-consumer-demo1、pom文件添加依赖<dubbo.version>2.6.9</dubbo.version><dubbo.spring.version>1.0.11</dubbo.spring.version><dubbo.regi原创 2021-02-05 22:19:13 · 399 阅读 · 0 评论 -
Java web项目创建笔记26 之《整合kettle》
kettle是一个ETL工具,用于数据的抽取、转换、加载功能,我们可以在java里加载kjb文件或者ktr文件1、pom文件添加依赖<kettle.version>9.1.0.0-324</kettle.version><!-- kettle --><dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-core</art原创 2021-01-26 15:02:11 · 2312 阅读 · 0 评论 -
springboot项目创建笔记21 之《redis应用场景》--不断更新
1、incr命令统计访问量1)用于统计文章、用户的访问量和点击率2)incr命令redis incr命令将key中储存的数字值增一。如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内。3)redis内部采用整数形式(Integer representation)来存储对应的整数值4)缺点是用户每操作一次,就向redis服务器发送一个incr命令,如原创 2021-01-04 16:32:30 · 387 阅读 · 0 评论 -
springboot项目创建笔记20 之《redis搭配SpringCache》
1、SpringCache是spring3.1版本发布出来的,它是对使用缓存进行封装和抽象,通过在方法上使用annotation注解来拿到缓存结果。正因为用了annotation,所以它解决了业务代码和缓存代码的耦合度问题,即在不侵入业务代码的基础上让现有代码即刻支持缓存注:对于redis的缓存,SpringCache只支持string,其他的hash、list、set、zset都不支持,要特别注意2、pom文件添加配置<!-- springcache缓存 --><depen原创 2020-12-31 14:46:14 · 221 阅读 · 0 评论 -
springboot项目创建笔记19 之《整合redis》
1、pom文件添加redis启动器<!--redis启动器--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、application-dev.yml添加配置spring: re...原创 2020-12-28 16:35:01 · 245 阅读 · 1 评论 -
springcloud项目创建笔记7 之《监控中心》
springboot admin server用于监控springboot应用程序1、在主项目建立maven-module,名称mycloud-admin-server2、编辑pom.xml文件springboot admin server的版本和springboot的版本是有对应关系的springboot 2.1.8只能使用spring boot admin server 2.1.6版本,不能使用后面的版本,启动就报错版本不同引用的包和配置也不一样,可关注官网信息:github主页:htt原创 2020-12-18 15:58:01 · 245 阅读 · 1 评论 -
springboot项目创建笔记18 之《打印mybatis和druid日志》
1、修改application-dev.yml可以用logback打印druid的Connection、Statement、ResultSet相关日志修改数据源这段的配置:1)filters: stat,wall,slf4j2)添加了slf4j相关的配置#定义数据源#参考 https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AEspring: datasource: dru原创 2020-12-16 11:35:38 · 1201 阅读 · 2 评论 -
springboot项目创建笔记17 之《整合mybatis》
一、引入的依赖包mybatis包,mysql驱动包,mybatis-generator插件,druid数据库连接池,tkMybatis包1、添加依赖mybatis-spring-boot-startermysql-connector-javadruid-spring-boot-startermapper-spring-boot-starterpagehelper-spring-boot-starter<!-- mybatis依赖 --><dependency>原创 2020-12-15 11:46:04 · 222 阅读 · 0 评论 -
springboot项目创建笔记16 之《@SpringBootApplication注解解析》
一、注解的使用1、使用非常简单,加在自定义的类上面,右键 - Run As - Java Application启动@SpringBootApplicationpublic class MybootApplication { public static void main(String[] args) { SpringApplication.run(MybootApplication.class, args); }}二、注解的组成1、@SpringBootApplication原创 2020-09-14 11:47:13 · 515 阅读 · 0 评论 -
springboot项目创建笔记15 之《参数校验功能》
一、校验框架spring的validator校验框架遵循了JSR-303验证规范在默认情况下springboot会引入hibernate validator机制来支持JSR-303验证规范springboot的validator校验框架有3个特性:1、JSR-303特性:JSR-303是一项标准,只提供规范不提供实现,规定了一些校验注解,如@Null,@NotNull,@Pattern2、hibernate validation特性:hibernate validation是对JSR-303规范的原创 2020-08-31 23:14:39 · 304 阅读 · 0 评论 -
springboot项目创建笔记14 之《全局异常处理》
一、全局异常处理器1、不用强制写try...catch,由全局异常处理器统一捕获处理2、捕获自定义异常3、Validator参数校验器,参数校验不通过会抛异常,无法通过try...catch语句捕获二、添加自定义异常1、建立包com.example.exception2、添加错误码接口ErrorCode.javapackage com.example.exception;public interface ErrorCode { public String code();原创 2020-08-31 16:34:08 · 304 阅读 · 0 评论 -
springboot项目创建笔记13 之《接口返回统一格式》
一、对所有Controller的response做统一格式封装我们的接口会返回空、返回字符串、返回对象、返回异常(这个后续讲),所以需要统一返回格式二、方法一在接口文档,规定外层的格式,比如需要返回4个字段:data、sign、repCode、repMsg1、建立包com.example.message2、建立CommonResponse.javapackage com.example.message;import io.swagger.annotations.ApiModel;im原创 2020-08-31 10:51:13 · 513 阅读 · 0 评论 -
springboot项目创建笔记12 之《使用swagger生成接口文档》
一、介绍swagger通过几个注解的方式,在项目启动后自动化生成接口文档优点:1、自动生成文档2、跨语言性,支持40种语言3、呈现出来的是一份可交互式的API文档,我们可以直接在文档页面尝试API调用,省去了准备复杂的调用参数的过程4、还可以将文档规范导入相关的工具,如SoapUI,这些工具将会为我们自动的创建自动化测试二、pom文件修改<dependency> <groupId>io.springfox</groupId> <...原创 2020-08-25 23:50:42 · 265 阅读 · 0 评论 -
springboot项目创建笔记11 之《使用lombok简化javabean》
一、安装lombok插件1、eclipse安装lombok插件为啥idea在plugin里搜索就能安装,而eclipse里要手动安装。。。2、下载lombok.jarhttps://projectlombok.org/download3、双击lombok.jar3、重启eclipse二、pom文件引入依赖...原创 2020-08-22 12:08:29 · 184 阅读 · 0 评论 -
springboot项目创建笔记10 之《提供rest服务》
springboot提供rest服务非常简单,和springmvc一致1、在src/main/java下建立web包2、在web包下添加MyController.javapackage com.example.web;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestContro原创 2020-08-16 21:07:44 · 170 阅读 · 0 评论 -
Java web项目创建笔记25 之《使用jdk实现线程池功能》
1、在webapp2_base模块src/main/java下添加包com.study.base.threads2、添加ThreadPool.java这个线程池由自己实现队列、工作线程的执行package com.study.base.threads;import java.util.LinkedList;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.原创 2020-08-12 22:05:09 · 244 阅读 · 0 评论 -
springcloud项目创建笔记6 之《apollo客户端使用》
apollo客户端是解决应用如何从apollo配置中心获取参数一、主要概念1、appid:用来标识应用身份的唯一id确保classpath:/META-INF/app.properties文件存在,并且其中内容形如:app.id=YOUR-APP-ID2、Apollo Meta Server:当前环境信息(区分各个环境)通过app.properties配置文件可以在classpath:/META-INF/app.properties指定apollo.meta=http://config-se原创 2020-06-29 18:05:42 · 2471 阅读 · 0 评论 -
springcloud项目创建笔记5 之《apollo配置中心》
配置中心可选apollo、disconf、nacosapollo、disconf基于http,nacos基于dns和rpc,disconf从2016年开始不维护了,还要依赖zookeeper,最后选择apollo。一、服务端部署1、有三个模块apollo-portal-1.6.1-github.zipapollo-adminservice-1.6.1-github.zipapollo...原创 2020-04-15 19:15:14 · 348 阅读 · 0 评论 -
springboot项目创建笔记9 之《restTemplate使用》
一、restTemplate默认构造方法1、getForEntity发送一个HTTP GET请求,返回ResponseEntity<T>,ResponseEntity<T>是Spring对HTTP请求响应的封装,T代表body要转换的类型第一个参数是url,第二个参数是返回body的类型,后面是传参例如:ResponseEntity<UserEntity>...原创 2020-04-09 17:41:55 · 490 阅读 · 0 评论