SpringBoot
死牛胖子
在技术的路上渐行渐远
展开
-
第十三章 @Enable*注解的工作原理
在前面的章节中,我们使用了 @EnableAspectJAutoProxy开启对AspectJ自动代理的支持 @EnableAsync开启异步方法的支持 @EnableScheduling开启计划任务的支持通过简单的@Enable*来开启一项功能的支持,从而避免大量的配置,降低了使用难度,这是怎么做到的呢?我们可以来研究一下这些注解的原码直接导入配置类@Target(Element原创 2017-02-23 14:54:00 · 912 阅读 · 0 评论 -
第二十四章 SpringBoot Starter POM
SpringBoot为我们提供了简化企业级开发绝大多数场景的Starter POM,只要使用应用场景所需要的Starter POM,相关的技术配置将会消除,就可以得到SpringBoot为我们提供的自动配置的Bean。spring-boot-starter:SpringBoot核心starter,包含自动配置、日志、yaml配置文件的支持spring-boot-starter-actuator:原创 2017-02-23 15:31:35 · 846 阅读 · 0 评论 -
第二十五章 SpringBoot导入XML配置
SpringBoot提倡零配置,即无XML配置,但是在实际项目中,还是会有各种原因会产生不可避免的XML配置,这时我们可以通过Spring提供的@ImportResource来加载XML配置@ImportResource({"classpath:db.xml","classpath:upload.xml"})原创 2017-02-23 15:32:07 · 1536 阅读 · 0 评论 -
第二十六章 SpringBoot不使用Parent POM
不是每个人都喜欢继承 spring-boot-starter-parent POM,比如你可能需要 使用公司的标准parent,或只是倾向于显式声明所有的Maven配置。你也可以通过以下方式引入SpringBoot<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.b原创 2017-02-23 15:32:42 · 1053 阅读 · 0 评论 -
第二十八章 SpringBoot自定义SpringApplication
如果不喜欢使用默认的SpringApplication,需要进行自行设置,比如:需要关闭Banner,可以这样写public static void main(String[] args) { SpringApplication app = new SpringApplication(MySpringConfiguration.class); app.setBannerMode(Ba原创 2017-02-23 15:33:50 · 1387 阅读 · 0 评论 -
第二十九章 SpringBoot自定义事件
参考第七章 Spring自定义事件。SpringBoot自定义事件也是使用同样的方式。在需要发布事件的地方加载ApplicationContext,然后进行事件发布package com.container.event;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.c原创 2017-02-23 15:34:43 · 3351 阅读 · 0 评论 -
第三十一章 SpringBoot使用CommandLineRunner
如果需要在 SpringApplication 启动后执行一些特殊的代码,你可以实现ApplicationRunner 或 CommandLineRunner 接口,这两个接口工作方式相同,都只提供单一的 run 方法,该方法仅在 SpringApplication.run(…) 完成之前调用。CommandLineRunner 接口能够访问string数组类型的应用参数,而 Application原创 2017-02-23 15:36:18 · 349 阅读 · 0 评论 -
第三十二章 SpringBoot使用application配置文件
SpringApplication 将从以下位置加载 application.properties 文件,并把它们添加到Spring Environment 中: 当前目录下的 /config 子目录。 当前目录。 classpath下的 /config 包。 classpath根路径(root)。 该列表是按优先级排序的(列表中位置高的路径下定义的属性将覆盖位置低的)。原创 2017-02-23 15:36:47 · 282 阅读 · 0 评论 -
第三十三章 SpringBoot使用第三方配置文件
SpringBoot默认会加载application.properties配置文件,但实际项目中,可能会需要使用更多的自定义配置文件(比如项目中已存在的配置文件,或者是进行配置分文件存储)。@ConfigurationProperties不仅可以注解在类上,也可以注解在public @Bean 方法上,当你需要为不受控的第三方组件绑定属性时,该方法将非常有用。@ConfigurationProper原创 2017-02-23 15:37:14 · 955 阅读 · 0 评论 -
第三十四章 SpringBoot获取配置属性
SpringBoot的默认配置文件为classpath下的application.properties,你可以在该文件中定义SpringBoot已有属性进行属性覆盖,你也可以定义自定义属性,如下所示:admin.name=bruceadmin.age=30你可以在@component中通过@Value方式进行获取@Value("${admin.name}")private String name原创 2017-02-23 15:37:39 · 693 阅读 · 0 评论 -
第三十五章 SpringBoot Profiles
Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只在特定的环境下生效。任何 @Component 或 @Configuration 都能注解 @Profile ,从而限制加载它的时机:@Configuration@Profile("prod")public class ProductionConfiguration { // ...}可以在applicati原创 2017-02-23 15:38:04 · 1027 阅读 · 0 评论 -
第三十六章 SpringBoot 热部署
在pom中添加以下代码,即可实现热部署<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </depe原创 2017-02-23 15:38:29 · 341 阅读 · 0 评论 -
第三十七章 SpringBoot日志输出
SpringBoot默认日志输出格式为2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.522014-03-05 10:57:51.253 INFO 45469 --- [ost-s原创 2017-02-23 15:39:01 · 286 阅读 · 0 评论 -
SpringBoot 整合 Logback
Logback是SpringBoot的默认日志选择,不需要进行任何配置>如果要自定义日志输出,只需要在src/main/resources下添加logback.xml即可。针对不同profile进行不同的日志输出设置,SpringBoot也提供了一个简便的实现,在src/main/resources目录下添加logback-spring.xml文件(请注意文件名称的变化)。最简实现<?xml ve原创 2017-02-23 15:39:29 · 331 阅读 · 0 评论 -
第三十九章 SpringBoot计划任务
SpringBoot的计划任务沿用Spring4.x的计划任务,参考第十章 Spring计划任务一、配置类添加@EnableScheduling注解,开启对计划任务的支持@SpringBootApplication@EnableSchedulingpublic class Application { public static void main(String[] args) {原创 2017-02-23 15:40:17 · 411 阅读 · 0 评论 -
第四十章 SpringBoot AOP
参考第四章 添加AOP支持,SpringBoot使用Aop略有不同一、添加pom依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>二、编写AOP切面package com.contain原创 2017-02-23 15:40:55 · 347 阅读 · 0 评论 -
第二十三章 SpringBoot @SpringBootApplication注解源码解析
@SpringBootApplication是SpringBoot的核心注解,它是一个组合注解,源码如下@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan原创 2017-02-23 15:22:46 · 1086 阅读 · 0 评论 -
第二十章 SpringMVC文件上传配置
SpringMVC通过配置一个MultipartResolver来上传文件,在SpringMVC的控制器中,通过MultipartFile来接收文件,通过MultipartFile[]接收多个文件上传。 一、添加依赖<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifact原创 2017-02-23 15:08:19 · 226 阅读 · 0 评论 -
第十一章 Spring条件注解@Conditional
在第六章 Profile中有介绍,通过@Profile可以根据profile的不同,创建不同的Bean。Spring4提供了一个更通用的基于条件的Bean的创建,即@Conditional注解 下面的示例将以不同的操作系统为条件,实现在Windows系统下运行程序,输出dir,若在Linux系统下运行程序,则输出ls>一、通过实现Condition接口,定义判断条件package demo2.原创 2017-02-23 14:52:13 · 1115 阅读 · 1 评论 -
第十章 Spring计划任务
Spring计划任务的实现非常简单,通过@Scheduled声明计划任务,通过@EnableScheduling配置来开启开计划任务的支持>一、计划任务执行类package demo2.service;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.scheduling.anno原创 2017-02-23 14:51:33 · 326 阅读 · 0 评论 -
第八章 Spring Aware扩展
Spring提供的Aware接口 BeanNameAware:获得容器中Bean的名称 BeanFactoryAware:获得当前Bean Factory,这样可以调用容器的服务 ApplicationContextAware:获得当前Application Context,这样可以调用容器的服务 MessageSourceAware:获得Message Source,这样可以原创 2017-02-23 14:50:19 · 235 阅读 · 0 评论 -
第七章 Spring自定义事件
一、自定义事件,集成ApplicationEventpackage demo2.event;import org.springframework.context.ApplicationEvent;public class DemoEvent extends ApplicationEvent { private static final long serialVersionUID = 1L;原创 2017-02-23 14:49:28 · 259 阅读 · 0 评论 -
第六章 Spring Profile
profile为在不同环境下使用不同的配置提供了支持,Spring提供了多种方式进行设定通过设定Environment的ActiveProfiles 通过设定JVM的spring.profiles.activeWeb项目设置Servlet的context parameterXML配置<servlet> <servlet-name>dispatcher</servlet-name>原创 2017-02-23 14:48:42 · 226 阅读 · 0 评论 -
第五章 Spring Bean的初始化和销毁
1>Java配置方式 使用@Bean的initMethod和destroyMethod(相当于XML配置的init-method和destroy-method) 2>注解方式 使用@PostConstruct和@PreDestroy本章Demo是基于上一章(添加AOP支持) 一、使用方式1package demo2.service;import javax.annotation.PostCo原创 2017-02-23 14:46:35 · 234 阅读 · 0 评论 -
第四章 Spring添加AOP支持
本章的Demo是基于上一章(快速搭建Spring项目)进行修改一、添加对aspectj的支持<aspectj.version>1.6.11</aspectj.version>.........<!--使用AspectJ方式注解需要相应的包--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspe原创 2017-02-23 14:45:18 · 279 阅读 · 0 评论 -
第三章 快速搭建Spring4.x项目
以下操作使用Spring Tool Suite(简称STS,Spring官方推出的基于Eclipse的开发工具)进行操作。一、新建一个Maven项目二、修改pom文件,添加对Spring的依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2017-02-23 14:42:27 · 491 阅读 · 0 评论 -
第二章 Spring模块介绍
Spring是模块化的1>核心容器 Spring-Core:核心工具类,Spring其它模块大量使用。 Spring-Beans:Spring定义Bean的支持 Spring-Context:运行时Spring容器 Spring-Context-Support:Spring容器对第三方包的集成支持 Spring-Expression:使用表达式语言在运行时查询和操作对象2>AOP Spr原创 2017-02-23 14:36:16 · 498 阅读 · 0 评论 -
第一章 Spring简史
第一阶段:XML配置在Spring1.x时代,都是使用XML配置Bean,随着项目扩大,我们把XML文件切分成多个配置文件,那时候需要频繁地在开发类和配置文件之间切换第二阶段:注解配置在Spring2.x时代,随着JDK1.5带来的注解支持,Spring提供了声明Bean的注解(如@Service等),大大减少了配置量。这时Spring圈子里存在一种争论:注解配置和XML配置究竟哪个更好?我们最终的原创 2017-02-23 14:34:26 · 372 阅读 · 0 评论 -
第十五章 SpringMVC项目快速搭建
一、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 http://maven.apache.org/xsd/maven-4.0原创 2017-02-23 15:05:10 · 245 阅读 · 0 评论 -
第十六章 SpringMVC静态资源映射
SpringMVC的定制配置需要我们的配置类继承一个WebMvcConfigurerAdapter类,并在此类使用@EnableWebMvc注解,来开启对SpringMVC的配置支持,这样我们就可以重写这个类的方法,完成我们的常用配置静态资源映射 静态文件(CSS、JS、图片)等需要直接访问,这时我们可以在配置类中重写addResourceHandlers方法来实现package demo3.原创 2017-02-23 15:05:43 · 351 阅读 · 0 评论 -
第十七章 SpringMVC拦截器配置
拦截器实现对每一个请求处理前后进行相关的业务处理,类似于Servlet的Filter。 可以让普通的Bean实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义拦截器。package demo3.interceptor;import java.util.Date;import javax.servlet.http.HttpSer原创 2017-02-23 15:06:18 · 233 阅读 · 0 评论 -
第十八章 SpringMVC @ControllerAdvice
通过@ControllerAdvice,我们可以将控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。@ExceptionHandler:配置全局异常处理 @InitBinder:配置WebDataBin原创 2017-02-23 15:06:54 · 308 阅读 · 0 评论 -
第十九章 SpringMVC其它配置
快捷的ViewController我们在之前的页面转向代码为@RequestMapping("/index")public String index() { return "index";}此处无任何业务,只是单纯的页面转向,实际开发中存在大量这样的页面转向,可以通过在配置中重写addViewControllers方法来简化配置@Overridepublic void addViewC原创 2017-02-23 15:07:42 · 210 阅读 · 0 评论 -
第四十一章 SpringBoot SpringMVC配置
Spring Boot为Spring MVC提供的auto-configuration适用于大多数应用,并在Spring默认功能上添加了以下特性: 引入 ContentNegotiatingViewResolver 和 BeanNameViewResolver beans。 对静态资源的支持,包括对WebJars的支持。 自动注册 Converter , GenericCon原创 2017-02-23 15:41:47 · 401 阅读 · 0 评论