当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:“松哥,我的HTML页面好像没有样式?”...这是我们传统的解决方案,在Spring Boot 中,其实配置方式和这个一脉相承,只是有一些自动化的配置了。...Spring Boot 中的配置 在 Spring Boot 中,如果我们是从 https://start.spring.io 这个网站上创建的项目,或者使用 IntelliJ IDEA 中的 Spring...我们知道,在 Spring Boot 项目中,默认是没有 webapp 这个目录的,当然我们也可以自己添加(例如在需要使用JSP的时候),这里第5个 / 其实就是表示 webapp 目录中的静态资源也不被拦截...所以我们理所当然的猜测,在 Spring Boot 中可能也是类似的配置。
自定义多播器 自定义多播器如下所示,其实和我们自定义其他的不太一样,因为其他的自定义不会有value值,为什么此处必须要有value = "applicationEventMulticaster"???...public MyMulticaster () { setTaskExecutor(Executors.newSingleThreadExecutor()); } } 答案在源码中...AbstractApplicationContext的initApplicationEventMulticaster()方法用于初始化Multicaster,Spring已经把多播器的名字写在源码中...,上面listener是同步执行的,如果定义了多波器,是异步执行的。...源码 https://github.com/cbeann/Demooo/blob/master/spring-demo/src/main/java/ioc/AppMyulticasterDemo.java
在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。”...在Spring Boot中实现WebSocket功能还是比较容易的,具体过程如下: 1.首先在pom文件中引入相关依赖 org.springframework.boot... spring-boot-starter-websocket 2.开启Spring Boot对websocket...应该把它设计成线程安全的。...*/ @OnClose public void onClose() { webSocketSet.remove(this); //从set中删除
的扩展配置文件中扩展类都有一个名称,便于在应用中引用它们。...看完resolve方法的源码,再看下resolve方法在Spring中调用场景,大致可以了解spring.handlers的使用场景:可以看到resolve()主要用在标签解析过程中,主要被在BeanDefinitionParserDelegate...② resolve()源码中核心逻辑之一便是调用的getHandlerMappings(),在getHandlerMappings()中实现对各个jar包中的META-INF/spring.handlers...Spring在3.2便已引入spring.factories,那spring.factories在Spring框架中又是如何使用的呢?...发扬光大的,是在Spring Boot中, 简单了解下SpringBoot中的调用。
踩过很多坑,终于在Spring Boot中成功实现了Redis存储。记录如下,方便别人,也方便自己。...Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。...Redis安装 至于在服务器上如何搭建Redis存储系统,本文就不在赘述,网上相关教程很多,请自行Google。...Boot中Redis应用 1....# Redis服务器连接端口 port: 6379 pool: # 连接池中的最大空闲连接 max-idle: 8 # 连接池中的最小空闲连接
设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。...而FreeMarker最初的设计,是被用来在MVC模式的Web开发框架中生成HTML页面的,它没有被绑定到 Servlet或HTML或任意Web相关的东西上。它也可以用于非Web应用环境中。...2.2环境配置文件准备 2.2.1POM文件如下: Spring boot 必备 + spring boot 测试类 ? ? ? Spring boot的父依赖(必备) ? ?...会去拼接user.ftl return "user"; 不知道ftl中的参数users是哪里来的? Model对象中的users会传递到 user.ftl中。...在DAO接口上添加@Mapper 标签 Controller中无法找到serviceimple的bean 在service层上添加@service 不知道程序如何找到mapper文件的 在Application.properties
1、前言 在微服务开发中,服务间的调用一般有两种方式:Feign、RestTemplate,但在实际使用过程中,尤其是Feign,存在各种限制及局限性,如:HTTP请求方式、返回类型等限制,有时会让你觉得那那都别扭...本文主要就gRPC在Spring Cloud项目中的使用进行说明实战。 关于gRPC相关基础知识可以参考上一篇文章gRPC的使用。...2、gRPC在Spring Cloud中的使用 看过上一篇文章gRPC的使用的话,你就清楚如果直接使用gRPC,显得有些吃力,因此借助一些开源的框架变得尤为必要。...gRPC在Spring Cloud中使用开源项目grpc-spring-boot-starter,便于在Spring Cloud项目中开发应用。...2.1 特点 使用@ GrpcService自动创建并运行一个 gRPC 服务,内嵌在 spring-boot 应用中 使用@ GrpcClient自动创建和管理你的客户端 支持Spring Cloud
一个是比较流行的 Mockito 模拟库,另一个是使用 Spring Test 提供的 MockRestServiceServer 模拟服务器,它可以创建模拟服务器以定义服务器交互。...最后,在测试方法中,我们使用 Mockito 的 when() 和 then() 方法定义了模拟的行为。...使用 Spring Test 模拟Spring Test 模块中包含一个叫 MockRestServiceServer 的模拟服务器。...,测试类中的 RestTemplate 应该与 UserService 类中使用的实例相同。...为了确保这一点,我们需要在 spring 容器中定义 RestTemplate bean,并在测试和实现中自动连接实例。
关于字符串在JVM的哪里 字符串对象在JVM中可能有两个存放的位置:字符串常量池或堆内存。...使用常量字符串初始化的字符串对象,它的值存放在字符串常量池中; 使用字符串构造方法创建的字符串对象,它的值存放在堆内存中; 另外String提供了一个API, java.lang.String.intern...(),这个API可以手动将一个字符串对象的值转移到字符串常量池中 JDK1.7之后虽然字符串常量池也转换到了堆中,但是其实字符串常量池是在堆中独立开辟的空间,我们创建一个普通字符串和一个字符串对象结构类似于下图...代码验证 这里其实我们可以看出一些intern()的特性了. intern源码分析 我们来看intern方法的实现,intern方法的底层是一个native方法,在Hotspot JVM里字符串常量池它的逻辑在注释里写得很清楚...总结 在Java应用恰当得使用String.intern()方法有助于节省内存空间,但是在使用的时候,也需要注意,因为StringTable的大小是固定的,如果常量池中的字符串过多,会影响程序运行效率。
1.1.2 引入 Spring Security 在 Spring Boot 中引入 Spring Security 是相当简单的,可以在用脚手架创建项目的时候勾选,也可以创建完毕后在 pom 文件中加入相关依赖...Spring Boot 帮我们完成了在 Spring 中需要完成的诸多配置【☞ Spring Security 基础入门】。...我们并没有配置静态的用户那么该如何登录呢,Spring Boot 为我们提供了一个默认的用户,用户名为:user,密码则是在启动 Spring Boot 项目是随机生成的,我们可以在控制台找到他。...我们在以后的操作中可能会将对象转为 json 或者将 json 转为对象,所以我们重写的方法需要加上 @JsonIgnore 将其忽略(该类本来就需要的不用忽略)。...☞ 认证类 Spring Boot 中 Spring Security 的认证类与 Spring 中的并无区别,都需要实现 UserDetailsService 接口,然后重写 loadUserByUsername
前言 本文作为入门级的DEMO,完全按照官网实例演示; 项目目录结构 Maven 依赖 org.springframework.boot...spring-boot-starter-parent 1.4.1.RELEASE </parent....and() .formLogin() .loginPage("/login") //定义登录的页面....permitAll() .and() .logout() //默认的"...(AuthenticationManagerBuilder auth) throws Exception { //在内存中注入一个用户名为anyCode密码为password并且身份为USER的对象
Spring Boot内嵌容器支持Tomcat、Jetty、Undertow。为什么选择Undertow? 这里有一篇文章,时间 2017年1月26日发布的: Tomcat vs..../spring/tomcat-vs-jetty-vs-undertow-comparison-of-spring-boot-embedded-servlet-containers/ 这篇文章详细测试了Spring...证明了Undertow在性能和内存使用上是最好的。...builder.addHttpListener(8080, "0.0.0.0"); } }); return factory; } 支持 HTTP2 // 在@...Configuration的类中添加@bean @Bean UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory
今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计的思想理念,才能在工作学习中运用到“无形”。...spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。...来指定 第四种:适配器(Adapter) 在Spring的Aop中,使用的Advice(通知)来增强被代理类的功能。Spring实现这一AOP功能的原理就使用代理模式(1、JDK动态代理。...我们能不能在spring的框架下通过少量修改得到解决?是否有什么设计模式可以利用呢? 首先想到在spring的applicationContext中配置所有的dataSource。...spring中在实例化对象的时候用到Strategy模式在SimpleInstantiationStrategy中有如下代码说明了策略模式的使用情况: ?
尊重版权:http://blog.csdn.net/qjlsharp/archive/2009/03/21/4013255.aspx 写的真不错。 在SSH框假中spring充当了管理容器的角色。...这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正是用在此处。...Spring的Ioc(控制反转和依赖注入) 控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控 依赖注入:组件之间的依赖关系由容器在执行期决定...使用Spring的第二个优点(AOP应用): 事务的处理: 在以往的JDBCTemplate中事务提交成功。异常处理都是通过Try/Catch 来完毕,而在Spring中。...这些也就是Spring中的AOP(面向切面编程)机制非常好的应用。一方面使开发业务逻辑更清晰、专业分工更加easy进行。
传统的Servlet在spring boot中怎么实现的? 本文主要内容: 1:springboot一些介绍 2:传统的servlete项目在spring boot项目中怎么实现的?...如下图: 2:在web.xml文件中需要配置servlet-name、servlet-calss、servlete-mapping中需要配置url-pattern。...如下图: 然后启动tomcat之后,在地址栏中输入xxx:xx/servlet/HelloWorld. 上面是Servlet的步骤。 在spring boot中,提倡使用注解。...web.xml中中的urlpattern....说明传统的servlet在springboot项目中可以很好的兼容。 我们总结下: SpringBoot中使用传统的Servlet。
方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObjectSupport...获取spring中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext...Spring框架的独立应用程序,须要程序通过配置文件手工初始化Spring的情况。...然后在通过它获取须要的类实例。上面两个工具方式的差别是,前者在获取失败时抛出异常。后者返回null。...提供的后三种方法能够实如今普通的类中继承或实现对应的类或接口来获取spring 的ApplicationContext对象,可是在使用是一定要注意实现了这些类或接口的普通java类一定要在Spring
spring在ssh框架中的作用学习 在SSH框假中spring充当了管理容器的角色。...这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正是用在此处。...Spring的Ioc(控制反转和依赖注入) 控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控 。...使用Spring的第二个好处(AOP应用): 事务的处理: 在以往的JDBCTemplate 中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中。...这些也就是Spring中的AOP(面向切面编程)机制很好的应用。一方面使开发业务逻辑更清晰、专业分工更加容易进行。
市面上介绍使用Kotlin进行后端开发的图书和文章也比较少,袁康在大量实践的基础上,萌生了写一本书的想法,希望和更多的Java开发人员分享Kotlin在后端开发中的实践经验。...本文选自书中“Kotlin在常用中间件中的应用”一章,这一章主要介绍Kotlin在常用中间件中的应用,通过示例程序,将展示Kotlin集成Spring Boot、Redis、JPA、QueryDSL、MongoDB...Spring Boot广泛应用于企业级应用和微服务开发。Spring Cloud微服务框架就是在Spring Boot基础上开发的。...和用Java开发Spring Boot项目类似,Kotlin在main函数中启动应用,用GetMapping定义一个get接口,使用@RestController后就不用为每个方法添加@ResponseBody...本书专注于Kotlin在Spring Boot微服务开发中的实践,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中间件中的应用,以及其在微服务注册中心、微服务配置中心、微服务网关、Spring
下面介绍如何在Spring boot应用中配置使用Swagger UI。...通过使用该类的项目的配置可以定制化展示接口页面。该类还实现了同时扫描多个包路径下的web接口,适应项目中在多个包路径下防止Controller类的情况。...接下来就是要在Spring配置文件中配置该类中使用到的各个变量。...=xxx接口详情 swagger.custom.url=www.xxx.com swagger.custom.name=xxxx swagger.custom.email=xxxx@xx.com 5.在Controller...本文通过分离出不变的配置过程和会变化的个性化展示和多包路径扫描,写了一个公共类,使Swagger得以非常方便地引入Spring boot项目。
研究spring源码的时候,发现注入bean到spring对象中有很多种,有一种是@bean注解,并且括号里可以写一些初始化时要执行的方法,还有销毁时执行的方法,spring中后置处理器可以将某些bean...进行增强,其中aop也就是运用到了该机制,他们拦截的位置其实是init方法的前后,并不是我们想的创建前和创建后的大众观点,可以一步步debug进入AbstractAutowireCapableBeanFactory...类里的initializeBean方法: ?...可以很明显的看到到底在哪里进行了增强。