前言 上面几篇文章介绍了SpringFramework的一些原理,这里开始介绍一下SpringBoot,并通过自定义一些功能来介绍SpringBoot的原理.SpringBoot在SpringFramework的基础上集成了Web容器,日志等功能,可以快速的实现Web服务.先看SpringBoot必要的依赖. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring…
Spring Boot Starter是在SpringBoot组件中被提出来的一种概念,stackoverflow上面已经有人概括了这个starter是什么东西,想看完整的回答戳这里 Starter POMs are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the Spring and related t…
springboot用来简化Spring框架带来的大量XML配置以及复杂的依赖管理,让开发人员可以更加关注业务逻辑的开发. 比如不使用springboot而使用SpringMVC作为web框架进行开发的时候,需要配置相关的SpringMVC配置以及对应的依赖,比较繁琐:而使用springboot的话只需要以下短短的几行代码就可以使用SpringMVC,可谓相当地方便: @RestController class App { @RequestMapping("/") String hom…
自动配置绝对算得上是Spring Boot的最大亮点,完美的展示了CoC约定优于配置: Spring Boot能自动配置Spring各种子项目(Spring MVC, Spring Security, Spring Data, Spring Cloud, Spring Integration, Spring Batch等)以及第三方开源框架所需要定义的各种Bean. Spring Boot内部定义了各种各样的XxxxAutoConfiguration配置类,预先定义好了各种所需的Bean.只有在…
本文若有任何纰漏.错误,还请不吝指出! 注:本文提到的Spring容器或者Bean容器,或者Spring Bean容器,都是指同一个事情,那就是代指BeanFactory.关于BeanFactory,后面有机会会再说下. 花絮 几年前接触过SpringBoot,跑过Demo,当时刚入行,连Spring都没搞明白,更别说SpringBoot了,就是觉得,哇塞,好厉害,然后一脸懵逼. 工作中没有用到,又没有去主动学习它.觉得很恐惧,这么厉害的东西,肯定是很深奥,很复杂吧!. 这种心理也造成了一定程度…
SpringBoot中配置字符编码一共有两种方式 方式一: 使用传统的Spring提供的字符编码过滤器(和第二种比较,此方式复杂,由于时间原因这里先不介绍了,后续补上) 方式二(推荐使用) 在application.properties中配置字符编码 springboot1.4.2之后新增的一种字符编码设置 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force…
我们以一个最简单的例子来完成这个需求:定义一个注解EnableContentService,使用了这个注解的程序会自动注入ContentService这个bean. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Import(ContentConfiguration.class) public @interface EnableContentService {} public interface ContentSer…
前言 之前在分析spring boot 源码时导出可见@ConditionalOnBean 之类的注解,那么它到底是如何使用的以及其工作流程如何,我们这里就围绕以下几点来分析: @Conditional系列与Condition的关系:@ConditionalXxx是注解,XxxCondition是对前面注解的对应处理类. @Conditional与Condition的源码分析 总结 一.@Conditional系列与Condition的关系 @ConditionalXxx是注解,XxxCondi…
前言 用Spring Boot的AOP来简化处理自定义注解,并将通过实现一个简单的方法执行判断节点是否开始的状态示列源码. AOP概念 面向侧面的程序设计(aspect-oriented programming,AOP,又译作面向方面的程序设计.观点导向编程.剖面导向程序设计)是计算机科学中的一个术语,指一种程序设计范型.该范型以一种称为侧面(aspect,又译作方面)的语言构造为基础,侧面是一种新的模块化机制,用来描述分散在对象.类或函数中的横切关注点(crosscutting concern…
最近发现看过的东西容易忘,但是写一遍之后印象倒是会深刻的多. 总所周知springboot极大的简化了java开发繁琐性,而其最大的优势应该就是自动化配置了.比如要使用redis,我们直接引入相关的包,将redis连接信息配置下即可使用.本文主要分析下springboot自动化配置的关键. 本文分析核心过程的代码,无关性的代码略过. 1.注解与组合注解 再说自动化配置前肯定要先说下注解,java5开始引入了注解这么个东西,可以对类,成员方法,成员变量加上标记,而这些标记可以在类加载,编译运行时被…