SpringBoot概述
1. SpringBoot是Spring框架中的一员,它简化了Spring的开发,正如Spring简化了EJB的开发一样
2. 虽然Spring的出现,让我们免于定义各种重量级的EJB的Java类,因为通常这些类必须要按某种规范去命名去编写,必须继承某个父类或者实现某些接口,Spring的出现让我们在定义类上简单了很多,清新了很多
3. 但是Spring有一个让人苦恼的地方就是各种各样的配置文件,以及配置文件中的各种标签元素,我们要想使用Spring就必须要熟练地修改配置
4. SpringBoot的出现则改变了这一局面,一个可运行的典型的SpringBoot应用甚至不需要任何配置文件(它只是把原来需要我们手工配置的地方提供了默认的配置),做为Spring框架中的一员,我们依然可以使用配置文件来修改它默认的行为
SpringBoot主要特性
Starter。它将常用的jar包依赖进行了分组与整合,将功能相近的jar包合并到一个Maven项目中进行重新打包发布(这个新的Maven项目就是一个Starter),充分利用了Maven依赖传递的特点,只需要添加一个依赖,就相当于原来添加的多个依赖了,而且经由Starter整合后的jar包依赖版本也是能够互相兼容的,减少了我们的思考成本,提高了我们的开发效率
自动配置。SpringBoot这个特性充分利用了Sping4对条件化配置的支持,它能根据我们使用的jar包依赖,“智能”地推测应用所需要的bean并自动化配置它们,而以前这个工作要交由我们开发人员自己手动配置,费时费力,还有可能出错。当然如果SpringBoot自动化配置出现了问题,依然可以由我们开发人员手动配置来进行更正
除此之外,SpringBoot还有其他特性,大家有余力可以自行学习。但是只要掌握以上2个特性,就已经足以开发出一个能够实际运行得不错的应用项目了
下面我们将以在页面上显示hello world为例给大家讲解一个可运行的最简单的SpringBoot小项目
最简单的pom.xml配置
创建一个简单的空Maven项目,修改pom.xml,添加如下内容
<!-- Spring Boot 必备神器, 配置parent后, dependencies中的依赖g-a-v就可以不用写v了, 这时的version将通过继承parent得到 -->
<properties>
<java.version>1.7</java.version>
</properties>
<!--继承于springboot的优良特性-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.4.RELEASE</version>
</parent>
// 继承于springboot的基础stater,
<dependencies>
<!-- spring MVC 是spring框架中的一个web框架
Struts2 webx
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven 构建插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
最简单的项目结构
再新建一个启动入口类
@ComponentScan(basePackages = {"cn.lhl"})
@EnableAutoConfiguration
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@ComponentScan(basePackages = {"cn.lhl"})(扫描组件)这个注解,用来告诉SpringBoot自动扫描cn.lhl这个包及其所有子包中的类,有没有加了@Controller @Service @Reposity @Component等注解的类,如果有,就把这些类的对象new出来,以便自动配置进行依赖注入等工作
@EnableAutoConfiguration这个注解则告诉SpringBoot启动自动配置功能
元注解:用来注解注解的注解
如果不指定包,就会扫描MyApp(启动类)所在的包
再新建一个控制器类
@RequestMapping("/home")
@Controller
public class HomeController {
@RequestMapping(value = "/hw", method = RequestMethod.GET, produces = "text/html;charset=UTF-8")
@ResponseBody
public String hw() {
return "hello world 你好";
}
}
1. @RequestMapping("/home")(映射器)这个注解用在控制器类中,用于告诉SpringBoot HTTP请求地址对应的逻辑是哪个类的哪个方法。
2. @Controller是一个组件
3. Spring核心概念 IoC(inverse of control(DI DL)) AoP(aspect oriented programming)
4. 可以给映射器加多个地址:@RequestMapping("/home",”/index”);但是一个地址只能对应一个功能,但是一个功能可以多个地址对应
5. 其中的method的值如果是RequestMethod.GET则这个方法会响应一个GET请求,produces = "text/html;charset=UTF-8"则与@ResponseBody搭配使用,告诉SpringBoot将此方法的返回值当做普通的HTML文本(一般是json字符串)返回给请求者
6. @ResponseBody内容可见,实际上是json字符串
7. @ResponseBody与@RequestBody的区别在于:前者一般要求响应内容是一个JSON字符串,而后者要求请求的内容必须是一个JSON字符串;前者配置在方法上,后者配置在参数上
8. 从地址栏发的请求是get请求,post请求要用ajax或者???
将MyApp这个类像一个普通的Java Application一样运行起来
再打开浏览器,地址栏中输入如下地址,回车
http://127.0.0.1:8080/home/hw