不学无数—SpringBoot入门Ⅰ

SpringBoot入门Ⅰ

Posted by 不学无数 on September 1, 2018

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给提供的第一步启动实在是简单,和它的宗旨也正相符合。快速而简便的构建项目。

http://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这个注解是基于你的启动类来扫描的,意思就是扫描启动类所在的文件夹以及以下的所有文件。

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启动那么在控制台中的日志中就会有显示。

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注解