MyException - 我的异常网
当前位置:我的异常网» 软件架构设计 » Spring-boot集锦

Spring-boot集锦

www.MyException.Cn  网友分享于:2013-02-03  浏览:0次
Spring-boot汇总

Spring-boot汇总

 

 

       Spring-boot的目的是帮助开发者快速搭建Spring框架,帮助开发者快速启动web容器,Spring-boot继承了原有Spring框架的优秀基因,Spring-boot化简了使用Spring的过程。

 

 

核心功能

 

1. 从大量XML配置改成JavaConfig,看起来更清晰,因为分开了一个个类,不需要配置web.xml,javaConfig时,要将信息注入到bean,如:拦截器、过滤器、DispatcherServlet配置

 

2. 内嵌Tomcat(默认)和Jetty,只要有JDK就能启动web服务

 

3. 提供starter简化Maven配置,只要用了spring-boot-starter-web,就能自动加入很多依赖包,如:webmvc、core、tomcat、annotation

 

4. 开发支持热部署,spring loaded

 

5. 只有一个全局的application.properties文件,这里放整个项目的总体配置

 

6. 日志记录默认使用logback,可以根据配置文件激活不同的loging.level,logback可以有自己的xml,用于配置激活,还有log的格式化,还有日志文件大小,压缩打包。

 

 

 

 

Spring-boot 自动配置原理

 

       这里还是要看@SpringBootApplication这个注释,他里面实现是一个组合注释,其核心是由@EnableAutoConfiguration提供,里面有个SpringFactoriesLoader.loadFactoryNames方法,扫描spring.factories中要自动配置哪些类。

 

       所以,在pom中选择spring-boot-starter-web,是挺重要的,加入这个依赖,就相当于加入了很多spring的常用依赖。

 

 

 

 

Spring-boot-starter的工作原理

 

1. Spring-boot启动时,扫描所有依赖的jar包,寻找包含spring.factories文件的jar

2. 根据spring.factories配置,加载自动加载的类

3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context

 

 

 

 

自定义Spring-boot-starter注意事项

 

1. springboot默认scan的包名是其main类所在的包名。如果引入的starter包名不一样,需要自己添加scan。

@ComponentScan(basePackages = {"com.xixicat.demo","com.xixicat.sms"})

 

 

2. 对于starter中有feign的,需要额外指定

@EnableFeignClients(basePackages = {"com.xixicat.sms"})

 

 

3. 对于exclude一些autoConfig

@EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class})

 

 

 

 

 

对Spring-boot的认识

 

       spring Boot是一个开源框架,它可用于创建可执行的Spring应用程序,采用了习惯优于配置的方法。此框架的神奇之处在于@EnableAutoConfiguration注解,此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。

 

 

@Enable*注释

 

@Enable*注释并不是新发明的注释,早在Spring 3框架就引入了这些注释,用这些注释替代XML配置文件。

 

  • @EnableTransactionManagement:它能够声明事务管理
  • @EnableWebMvc:它能启用Spring MVC
  • @EnableScheduling:它可以初始化一个调度器。 

 

 

属性映射

 

下面看MongoProperties类,它是一个Spring Boot属性映射的例子:

 

@ConfigurationProperties(prefix = "spring.data.mongodb")
public class MongoProperties {

    private String host;
    private int port = DBPort.PORT;
    private String uri = "mongodb://localhost/test";
    private String database;

    // ... getters/ setters omitted
}

 

 @ConfigurationProperties注释将POJO关联到指定前缀的每一个属性。例如,spring.data.mongodb.port属性将映射到这个类的端口属性。 

 

强烈建议Spring Boot开发者使用这种方式来删除与配置属性相关的瓶颈代码。

 

 

 

@Conditional注释

 

Spring Boot的强大之处在于使用了Spring 4框架的新特性:@Conditional注释,此注释使得只有在特定条件满足时才启用一些配置。 

 

在Spring Boot的org.springframework.boot.autoconfigure.condition包中说明了使用@Conditional注释能给我们带来什么,下面对这些注释做一个概述:

 

  • @ConditionalOnBean
  • @ConditionalOnClass
  • @ConditionalOnExpression
  • @ConditionalOnMissingBean
  • @ConditionalOnMissingClass
  • @ConditionalOnNotWebApplication
  • @ConditionalOnResource
  • @ConditionalOnWebApplication

 

 

应用程序上下文初始化器

 

       spring.factories还提供了第二种可能性,即定义应用程序的初始化。这使得我们可以在应用程序载入前操纵Spring的应用程序上下文ApplicationContext。 

 

       特别是,可以在上下文创建监听器,使用ConfigurableApplicationContext类的addApplicationListener()方法。 

 

       AutoConfigurationReportLoggingInitializer监听到系统事件时,比如上下文刷新或应用程序启动故障之类的事件,Spring Boot可以执行一些工作。这有助于我们以调试模式启动应用程序时创建自动配置的报告。 

 

      要以调试模式启动应用程序,可以使用-Ddebug标识,或者在application.properties文件这添加属性debug= true。

 

 

 

 

学习

http://tengj.top/2017/04/24/springboot0/

文章评论

“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
代码女神横空出世
代码女神横空出世
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员的鄙视链
程序员的鄙视链
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员和编码员之间的区别
程序员和编码员之间的区别
为什么程序员都是夜猫子
为什么程序员都是夜猫子
那些争议最大的编程观点
那些争议最大的编程观点
老程序员的下场
老程序员的下场
总结2014中国互联网十大段子
总结2014中国互联网十大段子
旅行,写作,编程
旅行,写作,编程
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员必看的十大电影
程序员必看的十大电影
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
我的丈夫是个程序员
我的丈夫是个程序员
10个调试和排错的小建议
10个调试和排错的小建议
我是如何打败拖延症的
我是如何打败拖延症的
程序员都该阅读的书
程序员都该阅读的书
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
中美印日四国程序员比较
中美印日四国程序员比较
如何成为一名黑客
如何成为一名黑客
Java程序员必看电影
Java程序员必看电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
 程序员的样子
程序员的样子
一个程序员的时间管理
一个程序员的时间管理
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有