- 博客(129)
- 收藏
- 关注
原创 SpringBoot 的多配置文件
在测试类的使用中,你也可以将 application.yml 中的 active 配置项去掉,转而在测试类的头上使用。SpringBoot 允许我们的项目提供多配置文件,并『激活、启用』其中的某一个。这条消息是在告诉你,由于你没有激活、启用某个配置文件,SpringBoot 使用了默认的配置文件,也就是。提供多个配置文件之后,你在 SpringBoot 默认加载的配置文件。这表示 SpringBoot 本次启动使用的就是这个配置文件。中只用写一个配置项,用以激活、启用某个。中的那个 xxx。
2024-06-07 11:43:55
969
2
原创 使用 Spring Boot 开发邮件系统
收件人使用用户代理来收取邮件,首先用户代理使用 POP3 协议来连接收件人人所在的邮件服务器,身份验证成功后,用户代理就可以把邮件服务器上面的收件人人邮箱里面的邮件读取出来,并展示给收件人。用户代理把邮件发送到发信人的邮件服务器上,邮件服务器上面有一个缓冲队列列,发送到邮件服务器上面的邮件都会加入到缓冲队列中,等待邮件服务器上的 SMTP 客户端进行行发送;收件人的邮件服务器收到邮件后,把这封邮件放到收件人在这个服务器上的信箱中;在日常使用的过程中,我们通常在邮件中加入图片或者附件来丰富邮件的内容。
2024-06-07 11:42:49
2803
原创 Spring Task 定时任务
除了这种方式 Spring Task 还支持并行执行任务,即由多个线程来执行不同的任务。注解标注在了这个配置类上,因此,Spring Boot 的入口类上就不再需要标注它了。Spring 3.0 以后自带了 task 调度工具,也称 Spring Task,它比 Quartz 更加的简单方便。在项目开发中,经常需要定时任务来帮助我们来做一些内容,比如定时派息、跑批对账、业务监控等。使用 SpringBoot 自带的定时非常的简单,只需要在方法上面添加。参数可以接受两种定时的设置,一种是我们常用的。
2024-05-30 16:52:33
1862
原创 SpringBoot 整合 Mybatis
几乎可以零配置需要很少的 XML 配置mybatis-spring-boot-starter 依赖于和SpringBoot,最新版1.3.2需要 MyBatis-Spring1.3以上,Spring Boot 版本1.5以上。注意mybatis-spring-boot-starter 是 MyBatis 官方开发的 Starter,而不是 Spring Boot 官方开发的启动包。mybatis-spring-boot-starter 支持 XML 配置和注解配置两种。
2024-05-30 16:50:04
3946
原创 Thymeleaf
Thymeleaf 旨在提供一个优雅的、高度可维护的创建模板的方式。为了实现这一目标,Thymeleaf 建立在自然模板的概念上,将其逻辑注入到模板文件中,不会影响模板设计原型,从而改善了设计的沟通,弥合了设计和开发团队之间的差距。Thymeleaf 从设计之初就遵循 Web 标准——特别是 HTML 5 标准,如果需要,Thymeleaf 允许创建完全符合 HTML 5 验证标准的模板。
2024-05-30 16:46:53
1376
原创 Spring Boot 项目中使用 JSP
在 Spring Boot 项目中不是不可以使用 JSP。想在 Spring Boot 中使用 JSP,需要满足一些特殊要求。如果像其他项目一样,直接在 IDEA 中通过 main 方法来启动项目,在访问测试的时候会出现。这是因为 Spring Boot JSP 项目需要额外进行一个设置:选择。step 2:排除内嵌的 Tomcat 依赖,避免 jar 包冲突。图标,通过点击它在弹出的窗口中可直接手动执行 maven 命令。补充:IDEA 的 Maven 工具窗口中,有个。,因此,后者不再需要单独配置;
2024-05-30 16:44:38
2682
原创 SpringBoot 基础之自动配置
SpringBoot 内部对大量的第三方库或 Spring 内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应 starter。这种由 Spring 提供的自动配置快速整合的包,其版本信息在 spring-boot-parent 中已定义,如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包。,而这个启动器中帮我们添加了 tomcat、Spring MVC 的依赖。该是来声明当前类是 SpringBoot 应用的配置类,简化了大量的繁复的配置信息。的类,做相应的操作。
2024-05-30 16:43:07
885
原创 SpringBoot 的 Java 代码配置(二)
因此,如果使用 HikariCP 只用声明你要用它就行,而声明要使用 Druid,你需要自己指定所使用的版本。上面的 DruidDataSource ,我们为其属性赋值时,它的四个属性都是简单类型属性,因此十分容易处理。但是,在 Spring 的容器中,Java Bean 可能会存在引用。在上面的 Druid 的配置中,数据库连接的四大属性值是在代码中『写死』的。而在 Java 代码配置中,通过 @Bean 方法的入参来表达 Bean 之间的引用关系。,所以,我们可以直接将自定义的配置项写在。
2024-05-29 17:34:33
1346
原创 SpringBoot 之基础(一)
如果你的 Spring Boot 项目中没有包含这个配置文件,Spring Boot 对每个配置项都有默认值(当然,我们也可以添加配置文件,用以覆盖其默认值)。Spring Boot 并不重复造轮子,而且在原有 Spring 的框架基础上封装了一层,并且它集成了一些类库(提供了默认的配置),用于简化开发。的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标即可!接下来的编码工作,就是正常的 Spring MVC 项目的开发过程。
2024-05-29 17:32:01
1080
1
原创 Spring Cloud 项目在网关聚合 Swagger 文档
换句话说,一个请求经过网关之后,为了确保要能够被网关“转”到你的当前微服务中,网关所收到的请求 URI 中的前缀必须是一个特定的、约定好的内容。所以,如果我们需要网关处引入 Swagger,用以聚合各个微服务的 Swagger,那么,我们需要把这个简写配置项还原成以前大段的、啰嗦的写法…上述内容,无论是 pom 引包,还是加配置类,绝大部分内容都是复制粘贴,无需改动的。上面的配置内容,就是以前被一个配置项简化掉的、现在需要再还原回来的内容。.pathMapping() 方法的的值是你的请求通过网关时“
2024-05-25 09:59:14
1095
原创 Spring Cloud 项目中使用 Swagger
如果,各个微服务的 Swagger 的配置中没有主动的多“加上”一段能路由到自己的 URI 前缀,那么 Swagger 所暴露出来的请求测试功能所产生的拼接出来的 URI 就成了:网关的 IP 和 Port 拼上微服务的 URI,而没有微服务标识那一段。未来,无论是在 Apifox 这样的第三方工具中测试,还是在网关处的原生的 Swagger 页面上进行测试,我们的测试请求都是应该发送给网关的,再由网关将请求路由给微服务。:在网关处引入 Swagger ,去聚合各个微服务的 Swagger。
2024-05-25 09:09:00
1704
原创 knife4j-swagger
这是两个可以帮大家"偷懒"的注解:如果 Controller 的方法的参数有多个,但是大家又懒得去定义 FO 时,可以会使用 Map 来"收"参数。@DynamicParameters 注解的功能比较简陋,只支持简单的情况。即,如果又更深层次、更复杂的嵌套关系,它就不好使了。@ApiOperationSupport 注解是扩展增强注解,目前主要扩展的属性有 order。knife4j 官方不建议使用该功能,因为这个功能比较简陋,仅适用于较为简单的场景。它是配合后续其它新增注解使用的。
2024-05-24 11:48:26
854
原创 Swagger3
Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的自动生成等功能。Swagger 的目标是为 REST APIs 定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,消费者就能与远程的服务互动通过少量的实现逻辑。Swagger(丝袜哥)是世界上最流行的 API 表达工具。了解。
2024-04-17 22:22:36
2481
原创 Spring MVC 中的适配器模式
上述问题的最简单直接的解决方案,就如同 Servlet API 一样,定义处一套统一的接口,要求 Spring MVC 框架的使用在在自定义 Controller 时,必须实现这个接口。使用适配器模式的好处在于,Controller 可以『放飞自我』,Spring MVC 的使用者可以不受 Controller 接口的限制,以更方便的方式来编写自定义的 Controller 类。也就是说,Controller 的作者写 Controller 时『放飞自我』的代价就是,他要『多』写个 Adapter。
2024-04-15 09:28:19
1277
原创 Spring MVC 国际化
使用国际化功能,再次强调,不要直接访问 JSP 页面,而是通过 Controller「转到」JSP 页面,因为 JSP 页面的显示,需要 Spring MVC 做一些准备工作,一旦「绕过」Controller,导致「准备工作」不充分会造成 JSP 页面无法正常显示。CookieLocaleResolver 它会从请求的 cookie 中查找 Locale 信息,如果 cookie 中没有,那么它会根据 accept-language 头部信息确定区域信息。语言区域是指一个特定的地理、政治或文化区域。
2024-04-15 09:24:54
1299
原创 Thymeleaf
JSP 不是唯一的模板引擎,除它之外还有 Velocity、FreeMarker。而 Thymeleaf 则是这个领域的后起之秀。Thymeleaf 旨在提供一个优雅的、高度可维护的创建模板的方式。为了实现这一目标,Thymeleaf 建立在""的概念上,将其逻辑注入到模板文件中,不会影响模板设计原型,从而改善了设计的沟通,弥合了设计和开发团队之间的差距。Thymeleaf 从设计之初就遵循 Web 标准——特别是 HTML 5 标准。
2024-04-11 21:47:56
1036
原创 Spring MVC 数据校验
在 Web 应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对数据进行验证。为了保证数据的安全性,客户端和服务端验证都是必须的。JSR 只是一套规范,其具体的实现中 Hibernate Validator 是最常见的实现,它即实现了 JSR 303 的要求,又实现了更新的 JSR 349 的要求)。注意由于版本原因,和只能二选一。Spring MVC 对 JSR 提供了良好的支持,如果,Spring MVC 的配置文件中配置了,那么就不再需要其它任何配置了。以下注解都有message。
2024-04-11 21:46:25
994
原创 Spring MVC 文件上传和下载
为了能上传文件,必须将 from 表单的设置为,并将设置为。实现文件上传的 “底层” 方案有 2 种:使用 Apache Commons FileUpload 包使用 Servlet 3.1 内置的文件上传功能无论你的底层是使用上述的哪种方案,Spring MVC 都对它们作出了『包装』,让 Spring MVC 中的上传文件的代码简化而统一:提供一个,并将类型的请求参数绑定到请求处理方法的类型的参数上。
2024-04-09 16:26:06
1107
原创 Spring MVC 拦截器
通过直接(或间接)实现接口,并向 Spring MVC 注册既可使用自定义拦截器。我们一般都是通过继承类来间接实现接口。我们可以去重写.preHandle方法在业务处理器处理请求之前被调用该方法会在 Controller 方法前执行返回值表示是否继续后续操作:返回 true 时,表示继续向下执行;返回 false 时,会中断后续所有操作(包括调用下一个拦截器和 Controller 中的方法执行)。在业务处理器处理请求执行完成后,生成视图之前执行。
2024-04-08 16:53:21
1222
1
原创 SpringMVC之静态资源访问
在 Servlet 容器自带的『Default Servlet』空闲的同时,DispatcherServlet 的对 URI 的处理逻辑中又没有对静态资源的处理逻辑,那么最终,Dispatcher Servlet 最终无法对静态资源访问的 URI 做出正确处理,而导致 404。而 Servlet 容器的 Defautl Servlet 的处理逻辑是:将 URI 看作一个文件的路径名,在对应的位置去找这个文件,读取其内容,并将读到的内容发回给请求方。的优先级和范畴又异常强大,因此,啥请求都走到了。
2024-04-08 16:49:54
1415
原创 SpringMVC操作Session和Cookie
这种情况下,Spring MVC 在调用请求处理方法时,会传入本次请求的 Request 对象,后续可以像普通同的 Servlet 代码一样操作 Session。
2024-04-02 17:13:22
727
原创 SpringMVC转发和重定向
Spring MVC 中的视图解析器负责解析视图。可以通过在配置文件中定义一个 View Resolver 来配置视图解析器:配置文件版:spring-web.xml
2024-04-02 17:12:18
634
原创 SpringMVC上下文对象
每个接口都要这么写太麻烦了,有没有什么办法可以让我直接在 Service 层获取到用户对象呢?当然是可以的,我们可以通过 SpringMVC 提供的 RequestContextHolder 对象在程序任何地方获取到当前请求对象,从而获取我们保存在 HttpSession 中的用户对象。在有些情况下,就算加了过滤器后我们现在还不能在 controller 层将 session 代码去掉!
2024-04-01 10:20:47
369
原创 SpringMVC基础Controller
对于初学者而言,如果你觉得『参数类型和返回值类型过于灵活多样,以至于你无法确定你使用哪个种更合适』,那么你就使用。注解类型的作用如同起名字所暗示:映射一个请求和一个方法。基于 Controller 注解的控制器的请求映射不需要写在配置文件中。注意,不要让 Spring 扫描一个太广泛的包,这会包含无意义的行为。此处需要注意的是,拦截规则是拦截所有请求,还是拦截特定后缀。属性值,则请求方法可处理任意 HTTP 方法。注解一个控制器类,那么,所有的方法都将映射为『注解类型,可以对一个方法进行请求处理。
2024-03-27 17:12:43
926
原创 SpringMVC基础之工作流程
将请求委派给控制器以执行特定于其的功能。注释指示特定类充当控制器的角色。注释用于将 URL 映射到整个类或特定处理程序方法。");return mav;注释将类定义为Spring MVC控制器。的第一个用法表示此控制器上的所有处理方法都与/hello路径相关。用于声明printHello方法作为控制器的默认服务方法来处理 HTTP GET 请求。可以定义另一个方法来处理同一 URL 的任何 POST 请求。value属性指示处理程序方法映射到的 URL,method。
2024-03-15 16:33:34
1472
原创 SpringMVC基础之简单程序应用
Spring MVC 是 Spring 提供的一个实现了 Web MVC 设计模式的轻量级 Web 框架。它与 Struts 2 框架一样,都属于 MVC 框架,但其使用和性能等方面都比 Struts 2 更加优异。
2024-03-15 16:31:11
929
原创 Spring 其它注解和杂项
使用 @Lazy 注解的典型场景就是解决循环依赖问题。特别是构造注入,@Lazy 是弥补构造注入的『缺点』的关键。当你对注入的 JavaBean 使用 @Lazy 注解时,Spring 注入的并非是这个单例对象,而是它的一个代理。当你(在未来)第一次使用这个 Bean 时,这个代理对象才会去 IoC 容器中找这个真正的 Bean。
2024-03-13 17:56:16
973
原创 SSM 整合利用 Servlet 新特性 WebAppInitializer 的原理
在这个名为 ServletContainerInitializer 的文件中,记录的是实现了 ServletContainerInitializer 接口的实现类的完全限定名。所以,我们需要做的是:需要直接(或间接)实现 WebApplicationInitializer,并在 onStartup 方法中实现我们曾将在 web.xml 中做的配置工作。Spring MVC 利用了 Servlet 的一个新特性,从而可以拜托对 web.xml 配置文件的依赖,利用 Java 代码进行等效地配置。
2024-03-13 17:46:11
253
原创 SSM 整合使用 @PropertySource 问题
如果你想将数据库连接的相关属性移入一个 classpath 下的 “.properties” 文件中,让后再在上述配置类中结合和来加载配置文件,引入相关属性值,那么,你会发现一个问题,你的读取到的属性值都是null!造成这个现象的原因在在于,我们是使用的进行的『』的工作,而开始『干活』的时机要比早!这就导致了,当你去读取标注了@Value的属性的值时,还没有为它们赋值。将@Value属性拆分出去,配置成一个单独的 JavaBean,再通过引入回来,变相强迫 Spring 在。
2024-03-13 17:42:38
343
原创 SSM 的 Java 代码整合
替代了 spring-dao.xml如果你在这里用上了 @PropertySource 注解,那么你要注意下,这里有个问题。
2024-03-13 17:40:52
495
原创 Spring 补充@Component 和 注入技巧 问题
如果你的类的构造器『只有有参构造器』,而没有无参的构造器,那么,Spring 会调用你有参的构造器去创建这个对象,并同时完成对其属性的赋值。Spring 是使用你的『无参构造器』来创建对象,(此时对象的各个属性还没有值),然后再通过『反射』对各个属性赋值。对于『必需的』依赖项,建议使用基于构造函数的注入,以使它们成为不可变的,并防止它们为 null。推荐的方法是使用『基于构造函数的依赖注入』方式和『基于 setter 方法的依赖注入』方式。对于『可选的』依赖项,建议使用基于 Setter 方法的注入。
2024-03-13 17:32:23
604
原创 JSR-250 的 @Resource
则从 IoC 容器中查找 name 匹配的 Bean 进行装配,找不到则抛出异常。属性两者同时出现,或同时不出现,亦或者出现一个,就意味着不同的『匹配的 Bean 进行装配,找不到或者找到多个,都会抛出异常。为依据在 IoC 容器中查找,如果没有找到,再以。这种情况下,类型和名字不是『且』的关系,而是『注意,type 和 name 两个条件是『规范定义的注解,它们分别是。,则从 IoC 容器中查找。
2024-03-13 17:26:18
395
原创 Spring Java代码配置 Java Bean
准备好一个配置类。其中写一个或多个方法,每个方法负责返回你的项目中的单例对象。创建对象,并将上述的配置类作为参数传递给它。在这个操作背后发生了这样的一件事情:Spring IoC 容器会去调用,你上述的配置类中的标注了的方法。它只调用一次,并将这些方法的返回值保存起来。毫无疑问,这个对象必定就是单例的。根据我们自己的需要,你可以向 Spring IoC 容器要上述的配置类中的这么些个单例对象。在获得这些单例对象之后,你要干什么,就是你自己的事情了。
2024-03-12 10:43:08
818
空空如也
document转字符串时缺少一半的标签
2023-11-20
正则表达式的纯数字,位数限制,初始位置限制,重复次数限制
2023-01-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人