在刚接触SSM框架的时候,想必都会被这个框架的配置文件所烦扰,须要本身手动配置的东西很是多,哪怕有些东西本身不须要也是须要配置的。而SpringBoot此时就应运而生,减小了你们的配置过程。相信都听过“约定优于配置”的这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提供没必要要的配置,但是使用Spring或者SpringMVC的话依然有许多这样的东西须要咱们进行配置,这样不只徒增工做量并且在跨平台部署时容易出问题。 简单来讲,就是使用SpringBoot能够是咱们可以快速的构建一个能用运行的Spring项目。html
介绍完Springboot之后,让咱们开始搭建一个简单的“Hello World!”的SpringBoot项目。千里之行始于足下,相信第一个java项目也是从“hello,world!”开始的。不要小瞧了这第一步,有多少人是在第一步遭受到了挫折从而放弃了。可是SpringBoot给提供的第一步启动实在是简单,和它的宗旨也正相符合。快速而简便的构建项目。java
<center><img src="http://p9jfgo4wc.bkt.clouddn.com/1531313795236.jpg" width="60%" height="60%"/></center>算法
能够清楚的看到SpringBoot的生成文件结构,其中FirstSpringBootApplication是和你的项目名是一致的,它至关于程序的入口处,而resource文件夹下的application文件是配置文件,例如想要配置启动的tomcat端口号均可以在此配置。build.gralde是因为我选择的是gradle因此生成的这个文件,此文件是能够将想要引用的jar包写在里面。gradle会自动的从网上或者本地下载相应的jar包。spring
在项目的启动文件中加入这行代码,固然也能够本身建一个java文件。可是要加上@RestController注解。此时如果tomcat
@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。springboot
一般来讲,SpringBoot的启动类建议放在代码的根目录下的。由于@EnableAutoConfiguration这个注解是基于你的启动类来扫描的,意思就是扫描启动类所在的文件夹以及如下的全部文件。app
com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web +- CustomerController.java
进入到@SpringBootApplocation这个注解当中时,能够发现里面还有其余的注解框架
<center><img src="http://p9jfgo4wc.bkt.clouddn.com/7A5DFBDF-46A1-4C30-ABA5-DCA3F10A9B1D.png"/></center> 其中最重要的是@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan这三个注解。dom
这是一个类级别的注解,这个注解的做用是猜,为何是猜呢。由于他会基于你的jar包依赖而猜想将会怎样的配置。例如spring-boot-starter-web你添加了这个jar包之后其中包含着Tomcat和SpringMVC,这个注解会猜想这个项目会是一个web项目,因此他就会自动的配置了Spring。
固然你要能够本身定制本身须要的配置,例如若是你想添加本身的数据源DateSource的话,那么本身写一个类,上面加上@Configure的注解,那么在项目启动的时候就会优先使用本身写的配置。若是想知道项目中有哪些是自动配置了,那么启动项目的时候用--debug启动那么在控制台中的日志中就会有显示。
在Sping中你可使用注解进行注入Bean,例如@Controller@Service等等,这些都是自动注入的。可是得设置扫描的包路径,直接@ComponentScan("org.example.web")这样既可,就是扫描org.example.web下的包。这个注解和xml中对应的配置是
<context:component-scan base-package="org.example.web"/>
加上此注解的就代表了一个类提供SpringBoot应用。在以前的Spring的Test模块中,若是想要进行模块化的测试的话,或许会去寻找@ContextConfiguration进行加载一些资源文件,另外也可能须要写针对于Test模块的@Configuration,可是在SpringBoot中不用如此,由于他会有一个算法,会在模块化测试的时候回自动的寻找@SpringBootConfiguration注解。这样就不须要单独的配置测试模块的配置文件了,可是若是想定制化测试模块的配置文件话也能够,只要加上@TestConfiguration便可。
SpringBoot是不推荐使用xml的配置文件,他所想要的结果是全部的配置都是java类上面加上@Configuration配置。可是有的项目确实得须要xml配置文件,这时候就可使用@ImportResource注解