不学无数——SpringBoot入门Ⅰ

SpringBoot

1.SpringBoot简介

在刚接触SSM框架的时候,想必都会被这个框架的配置文件所烦扰,需要自己手动配置的东西非常多,哪怕有些东西自己不需要也是需要配置的。而SpringBoot此时就应运而生,减少了大家的配置过程。相信都听过“约定优于配置”的这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,可是使用Spring或者SpringMVC的话依然有许多这样的东西需要我们进行配置,这样不仅徒增工作量而且在跨平台部署时容易出问题。简单来说就是使用SpringBoot可以快速构建一个能够运行的Spring项目。

1.1 SpringBoot优点

  • 能够快速构建一个能够独立运行的Spring项目
  • 内嵌有Tomcat容器,无需配置Tomcat
  • 提供了许多starter,简化了许多的配置
  • 无代码生成,没有xml的配置

2.第一个SpringBoot项目启动

2.1 项目搭建

介绍完Springboot以后,让我们开始搭建一个简单的“Hello World!”的SpringBoot项目。千里之行始于足下,相信第一个java项目也是从“hello,world!”开始的。不要小瞧了这第一步,有多少人是在第一步遭受到了挫折从而放弃了。但是SpringBoot给提供的第一步启动实在是简单,和它的宗旨也正相符合。快速而简便的构建项目。

https://start.spring.io/这是SpringBoot提供的建立项目的网站,点击进去以后选择所需要的版本、语言、功能以后点击生成即可生成一个项目包,如果是想要启动一个简单的web项目,那么就在功能处输入web,那么会在建立项目的时候自动引入了springboot启动web包。然后用编译器打开项目以后你会发现SpringBoot已经将文件目录都创建好了。

可以清楚的看到SpringBoot的生成文件结构,其中FirstSpringBootApplication是和你的项目名是一致的,它相当于程序的入口处,而resource文件夹下的application文件是配置文件,例如想要配置启动的tomcat端口号都可以在此配置。build.gralde是由于我选择的是gradle所以生成的这个文件,此文件是可以将想要引用的jar包写在里面。gradle会自动的从网上或者本地下载相应的jar包。

2.2 项目启动

在项目的启动文件中加入这行代码,当然也可以自己建一个java文件。但是要加上@RestController注解。

@RequestMapping("/")
    String home() {
        return "Hello";
    }

为什么是@RestController而不是@Controller呢,此时我们可以点击进@RestController中可以看到它是由@Controller@ResponseBody组成的注解。其中加不加@ResponseBody是有区别的,如果加上的话那么就会将你的返回值作为数据返回,如果不加的话那么就会当做页面的名称。举个例子像上面的代码如果有@ResponseBody的话那么就会返回给页面Hello字符串,如果是没有的话就会跳转到Hello.html或者Hello.jsp页面,具体是jsp还是html页面,得看SpringMvc的配置了,这里就不详细解释。然后直接运行FirstSpringBootApplication.java里面main方法即可启动。打开了启动文件你会发现上面带了一个@SpringBootApplocation注解。这个注解接下来我们再解释。然后在页面输入localhost:8080即可看见Hello。

2.3项目结构

通常来说,SpringBoot的启动类建议放在代码的根目录下的。因为@EnableAutoConfiguration这个注解是基于你的启动类来扫描的,意思就是扫描启动类所在的文件夹以及以下的所有文件。如下所示,SpringBoot回去扫描domain、service和web包下的文件

com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java

3.@SpringBootApplocation注解详解

进入到@SpringBootApplocation这个注解当中时,可以发现里面还有其他的注解

其中最重要的是@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan这三个注解。

3.1@EnableAutoConfiguration

这是一个类级别的注解,这个注解的作用是猜,为什么是猜呢。因为他会基于你的jar包依赖而猜测将会怎样的配置。例如spring-boot-starter-web你添加了这个jar包以后其中包含着Tomcat和SpringMVC,这个注解会猜测这个项目会是一个web项目,所以他就会自动的配置了Spring。

当然你要可以自己定制自己需要的配置,例如如果你想添加自己的数据源DateSource的话,那么自己写一个类,上面加上@Configure的注解,那么在项目启动的时候就会优先使用自己写的配置。如果想知道项目中有哪些是自动配置了,那么启动项目的时候用--debug启动那么在控制台中的日志中就会有显示。

如果发现有些类不想让他自动加载的话,那么就使用@EnableAutoConfiguration(exclude={类名})即可。

3.2 @ComponentScan

在Sping中你可以使用注解进行注入Bean,例如@Controller@Service等等,这些都是自动注入的。但是得设置扫描的包路径,直接@ComponentScan("org.example.web")这样既可,就是扫描org.example.web下的包。这个注解和xml中对应的配置是

<context:component-scan base-package="org.example.web"/>

3.3@SpringBootConfiguration

加上此注解的就表明了一个类提供SpringBoot应用。在之前的Spring的Test模块中,如果想要进行模块化的测试的话,或许会去寻找@ContextConfiguration进行加载一些资源文件,另外也可能需要写针对于Test模块的@Configuration,但是在SpringBoot中不用如此,因为他会有一个算法,会在模块化测试的时候回自动的寻找@SpringBootConfiguration注解。这样就不需要单独的配置测试模块的配置文件了,但是如果想定制化测试模块的配置文件话也可以,只要加上@TestConfiguration即可。

3.4其他注解

3.4.1@ImportResource

SpringBoot是不推荐使用xml的配置文件,他所想要的结果是所有的配置都是java类上面加上@Configuration配置。但是有的项目确实得需要xml配置文件,这时候就可以使用@ImportResource注解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容