SpringBoot 入门(一)

1. 什么是SpringBoot?

  SpringBoot是一个快速开发框架,能够帮我们快速整合第三方框架(Maven依赖关系##Maven继承),完全采用注解化,简化XML配置,内置嵌入Http服务器(Tomcat、Jetty),默认嵌入Tomcat服务器。最终以java应用程序进行执行。(SpringBoot项目中没有web.xml)

2. SpringBoot与SpringCloud的关系

  SpringCloud是一套目前比较完整的微服务框架,功能非常强大。注册中心、客户端调用工具、服务治理(负载均衡、断路器、分布配置中心、网关、服务链路、消息总线等)

  关系:SpringBoot + SpringCloud 实现微服务开发,使用Springmvc实现微服务接口

     SpringBoot 实现快速开发

3. SpringBoot与SpringMVC的关系

  SpringBoot  web组件集成了SpringMVC框架。

4. 用SpringBoot写一个 HelloWorld

  •   新建一个Maven工程

          

  •  在pom.xml中添加依赖信息
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.wanwei</groupId>
  <artifactId>springboot2.0-helloword</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <!-- spring-boot-starter-parent 整合第三方常用框架依赖信息(各种依赖信息) -->
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.0.RELEASE</version>
  </parent>
  <!-- spring-boot-starter-web是springboot整合SpringMVC 实现原理:Maven依赖继承关系 -->
  <!-- 相当于把第三方常用maven依赖信息在parent项目中已经封装好了,使用springboot提供依赖信息关联整合的jar包 -->
  <!-- springboot 中快速处理原理(Maven子父依赖关系),springboot对常用的依赖信息进行封装 -->
  <dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <!-- 因为parent里面已经封装了版本号,所以这里不需要再写版本号 -->
      </dependency>
  </dependencies>
</project>
  •  创建一个Controller
package com.wanwei.index.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 *SpringBoot启动原理:SpringMVC注解方式启动,内嵌http服务器(默认是Tomcat)
@EnableAutoConfiguration注解作用:开启自动配置,默认只扫描当前类 *
*/ @RestController @EnableAutoConfiguration public class MemberController { //RestController注解表示该类的所有方法都返回json格式 @RequestMapping("/memberIndex") public String memberIndex(){ return "SpringBoot的第一个案例"; } public static void main(String[] args) { //整个程序的入口,启动SpringBoot SpringApplication.run(MemberController.class, args); } }

  这样一个简单的SpringBoot Holloworld就写好了,运行后在浏览器访问:http://localhost:8080/memeberIndex


5. @ComponentScan 注解

  上面的项目中只有一个Controller,但我们实际开发的项目中往往是有多个Controller,而 @EnableAutoConfiguration 注解只扫描当前类,这时候我们可以新建一个类将启动代码抽取出来,并使用 @ComponentScan 注解设置扫包范围。

        

package com.wanwei.index.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RestController;
/**
 * 
 * 将启动代码单独出来运行
 * @ComponentScan注解作用:包扫描器,设置扫包范围
 */
@RestController
@EnableAutoConfiguration
@ComponentScan("com.wanwei.index.controller")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

这时候我们再增加一个Controller

  

packagecom.wanwei.index.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController {
    @RequestMapping("/index")
    public String index(){
        return "SpringBoot2.0 index";
    }
    public static void main(String[] args) {
        SpringApplication.run(IndexController.class, args);
    }
}

  运行后在浏览器访问:http://localhost:8080/memeberIndex 和 http://localhost:8080/index 都可以成功。

6.@SpringBootApplication 注解

  在实际项目中不同的Controller一般会有不同的包,那我们在设置扫包范围时就需要这么写:@ComponentScan(basePackage = {"com.wanwei.index.controller","com.wanwei.order.controller"})但是如果包太多这样写又很麻烦,这时候我们就可以使用@SpringBootApplication注解,(它的作用其实就等同于@EnableAutoConfiguration + @ComponentScan),默认扫描当前包和当前包的同级包、子包。

  •   新建一个包,在此包下创建一个Controller,然后把启动类App放在com.wanwei包下(保证了启动类和其他Controller类都在同级包下)

          

package com.wanwei.order.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrderController { @RequestMapping("/order") public String order(){ return "使用@SpringApplication注解"; } public static void main(String[] args) { SpringApplication.run(OrderController.class, args); } }
  •   在启动Controller的类中注释掉@EnableAutoConfiguration 和 @ComponentScan,添加@SpringBootApplication注解
package com.wanwei;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
/**
 * 
 * 将启动代码单独出来运行
 * @ComponentScan注解作用:设置扫包范围
 */
//@EnableAutoConfiguration
//@ComponentScan("com.wanwei.index.controller")
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

  运行代码,所有页面都能访问成功。

猜你喜欢

转载自www.cnblogs.com/alimeng/p/10127017.html