SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置
一、SpringBoot常用注解
二、SpringBoot自动配置机制
SpringBoot版本:1.5.13.RELEASE
对应官方文档链接:https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/
一、SpringBoot常用注解
在上一篇文章中https://blog.csdn.net/zhichao_qzc/article/details/80642111引用了官方文档的入门例子,这个例子中只是告诉我们如何去快速上手SpringBoot,我们实际开发中,肯定不会在一个类中把所有业务处理包圆,通常会划分出Controller层、Service层、Dao层等。SpringBoot官方文档给出了如何去规划我们的代码,并且如何正确使用它们。
官方文档给出了一个常用的代码层次划分结构图
官方文档推荐将包含main方法的类放到项目的根包下,并且使用@SpringBootApplication注解进行标注,该注解会将当前类所在路径作为基准目录,扫描基准目录下所有类(包含子目录中的类)。
@SpringBootApplication是SpringBoot提供的一个常用注解,它包含了另外3个很常用的注解,分别是
@EnableAutoConfiguration,@ComponentScan和@Configuration。
@SpringBootApplication // 等价于 @Configuration + @EnableAutoConfiguration + @ComponentScan
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }
(1)@EnableAutoConfiguration是SpringBoot提供的一个注解,它的作用是启动SpringBoot的自动配置机制;
(2)@ComponentScan是Spring框架提供的一个注解,它能扫描项目中所有的组件(@Component, @Service, @Repository, @Controller等进行标注的类)并将其注册到Spring容器;
(3)@Configuration是Spring框架提供的一个注解,它能替代传统的xml配置文件,将Spring框架中的xml文件以Java类的形式替代,去XML是SpringBoot的一个重要思想。
在项目中我们可以将类同时标注@EnableAutoConfiguration、@ComponentScan和@Configuration,所起的作用和@SpringBootApplication是相同的,但需要注意的是,@EnableAutoConfiguration、@ComponentScan和@Configuration这3个注解并非是捆绑销售,我们可以将他们任意组合。官方文档中给出了如下的一个例子
@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }
可以看到,代码中并没有使用@ComponentScan注解,而是使用@Import注解来导入组件并将其声明成一个bean。当然,如果我们对XML文件念念不忘,我们可以使用@ImportResource注解来导入XML文件,@Import和@ImportResource都是Spring框架提供的注解。
@Configuration
@EnableAutoConfiguration
@ImportResource(locations={"classpath:applicationContext.xml"})
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
二、SpringBoot自动配置机制
SpringBoot总是尝试根据我们的jar依赖,来为我们的项目进行一些自动配置以减轻开发者环境搭建的负担,例如我们项目中依赖了spring-boot-starter-web,SpringBoot则会自动为我们进行web环境的配置(如添加内置Tomcat、配置SpringMVC等)。
SpringBoot自动配置的幕前黑手就是上一节中提到的@EnableAutoConfiguration注解。SpringBoot自动配置是非入侵的,我们可以开启我们自己的配置来替代自动配置,例如如果我们添加了自己的数据源配置,则SpringBoot默认内置的数据库服务则不会起作用。
我们可以在启动时加入 –debug 参数来查看当前有那些自动配置,命令行直接执行java -jar *.jar –debug即可。如果想在IDEA中查看,则首先进行如下配置
执行main方法即可看到当前有那些自动配置
如果我们不需要某些自动配置,可以通过@EnableAutoConfiguration注解的exclude或者excludeName属性来指定不需要的自动配置,需要注意的是,当不需要的进行自动配置的类不在classpath下时,此时只能通过excludeName属性指定类的全路径名来排除不需要的自动配置。当然,还有一种办法是在SpringBoot配置文件中指定spring.autoconfigure.exclude,SpringBoot配置文件一般是指classpath下默认的application.properties或者application.yml或者application.yaml,在这里不做说明,后续的文章会进行详细介绍。
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }
SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置的更多相关文章
- SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1
在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...
- SpringBoot入门(二)——起步依赖
本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...
- 【SSRS】入门篇(二) -- 建立数据源
原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...
- spring注解开发中常用注解以及简单配置
一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...
- 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...
- springboot系列总结(二)---springboot的常用注解
上一篇文章我们简单讲了一下@SpringBootApplication这个注解,申明让spring boot自动给程序进行必要的配置,他是一个组合注解,包含了@ComponentScan.@Confi ...
- SpringBoot入门笔记(二)、使用fastjson
1.添加fastjson配置 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastj ...
- SpringBoot | 第六章:常用注解介绍及简单使用
前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志配置等.这章节开始,开始总结一些关于springboot的综合开发的知识点.由于SpringBoot本身是基于Sprin ...
- SpringBoot入门 (十二) 定时任务
本文记录在SpringBoot中使用定时任务. 在我们的项目中,经常需要用到定时任务去帮我们做一些事情,比如服务状态监控,业务数据状态的更改等,SpringBoot中实现定时任务有2中方案,一种是自带 ...
随机推荐
- 手把手教你如何利用 HeroKu 免费获取一个 Scrapyd 集群
手把手教你如何利用 HeroKu 免费获取一个 Scrapyd 集群 本文原始地址:https://sitoi.cn/posts/48724.html 准备环境 一个 GitHub 的账号 一个 He ...
- Centos 7 解决free -m 下buff/cache缓存很高
Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是linux内存管理中 ...
- django 权限设置 左侧菜单点击显示,面包屑
1.左侧菜单点击显示 就是在点击的时候保留点击的功能 方法. 1.加入新的字段,pid来判断 class Permission(models.Model): """ 权限 ...
- WTL 9.0的变化 - atlapp.h
忽然发现WTL更新到9.0.4140了,便对比了一下 8.1.12085. 先看看atlapp.h中有什么大的变动. 第61行: #if defined(_SYSINFOAPI_H_) &&a ...
- 小学四则运算口算练习app---No.2
经过昨天的了解,虽然还是很懵,总要下手摸到鼠标来写第一个页面! 这是一开始设置出体数目和时间的页面,使用者根据提示进行相关设置即可! 代码如下: <?xml version="1.0& ...
- java 读写Parquet格式的数据 Parquet example
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOExce ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块AT指令TCP透传方式,定时访问升级(含有数据校验)
实现功能概要 单片机定时使用http访问云端的程序版本,如果版本不一致, 然后通过http下载最新的升级文件,实现远程升级STM32程序. 兼容Air202 ,SIM800 测试准备工作(默认访问我的 ...
- 洛谷 p3870 开关 线段树模板
这两天学了很长时间于是做了一道水题 我就用了模板,就连任何优化都没有 就AC了,复杂度也很爆炸10个点1500多毫秒 这个题就是把lazy[]改成记录下修改的次数,每次修改的时候mod 2,因为反过来 ...
- 安卓设备连接Mac的简单方法
mac设备是苹果出品的桌面系统,以高冷而闻名,不同于我们平常使用的windows系统,mac系统对软件硬件的兼容性很差,将iOS 设备(iPhone.iPad和iPod)连接至Mac是一件很简单的事, ...
- debian/ubuntu安装mssql
添加源: debian源:deb [arch=amd64] https://packages.microsoft.com/debian/10/prod buster main ubuntu源:deb ...