最近有时间 回顾一下2年前用这个Springboot的点点滴滴 构建一个Springboot 工程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32048567/article/details/85697291

Springboot 是为了简化Spring 应用的创建、运行、调试、部署  等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的xml配置 我们只需要遵守规范 引入相关的依赖就可以轻易的搭建出一个WEB工程  

  在没有Springboot之前 搭建一个普通SSM项目需要半个小时或者更久 有了Springboot 而一切去繁为简 

设计的目标 

  1.       java项目开发复杂度极其高
  2.       java 项目的维护非常困难
  3.      为所有使用Spring框架的开发者提供一个更加简单 快速入门的体验 让大量时间充分利用到业务上去
  4.       提供一些常见的功能  如 WEB容器  监控 健康  安全等功能 
  5.       干掉XML 遵守规范 开箱即用  
  6.       Spring 推出微服务实现的两个重要开发框架 Springboot /SpringCloud

前提

  1.      Springboot 之所以慢慢可以火遍全世界 是因为在springboot 中使用的大量注解还是之前Spring所提供的注解
  2.  那么这一点让所有开发者几乎可以零适应进行完整过度 
  3.      SpringBoot 为我们提供了一系列的依赖包,所以需要构建工具的支持:MavenGradle。由于本人更习惯使用Maven
  4. 所以 后续案例都是基于Maven 与 IntelliJ IDEA,同时这里是基于最新的SpringBoot2编写

创建项目

        初次接触,我们先来看看如何创建一个Spring Boot项目,这里以IntelliJ IDEA为例,其他的IDE工具小伙伴们自行搜索创建方式。创建完项目后,各位小伙伴请认真、细心的对比下与传统的WEB工程有何区别(如:目录结构)。

点击File -> Project

如果用过 Eclipse/IDEA 等工具的,对创建项目肯定不会陌生,但为了照顾第一次使用的我贴上了图文

  选择Spring Initializr

到这一步选择的时候,如图中选项的是Spring Initializr(官方的构建插件,需要联网),第二个是自己选择Maven构建。

扫描二维码关注公众号,回复: 4771236 查看本文章

第三个是自己选择 Gradle 构建  ,第四个自己去https://start.spring.io 网站里面下载 。这里直接选用插件构造项目 

   点击next 出现 填写项目基本信息

  • Group: 组织ID,一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为 org、com、cn等等,

  • 其中 org为非营利组织,com为商业组织。如阿里、淘宝(com.alibaba/com.tenxun/com.baidu)

  • Artifact: 唯一标识符,一般是项目名称

选择包

 Spring Initializr 为我们提供了很多的选项 不同的选项有不同的作用 在初期我们只需要依赖Web ---->Web 就可以了

 选择好了依赖包之后点击Next----Finish

    

目录结构 

- src

        -main

            -java

                    -package

                                                  

                        -SpringbootApplication    #主函数,启动类,运行它如果运行了 Tomcat、Jetty、Undertow 等容器

                      -resouces

                             - statics     #存放静态资源 js/css/images 等

                              - templates  #存放 html 模板文件

                               - application.yml       #主要的配置文件,SpringBoot启动时候会自动加载application.yml/application.properties  

                                   -test  #测试文件存放目录

                         # pom.xml 文件是Maven构建的基础,里面包含了我们所依赖JAR和Plugin的信息

- pom

pom.xml 依赖 

因为使用Spring Initializr 插件 所以如下的配置都不需要我们自己去写啦  需要注意的是版本的选择 稳定版本BUG少 

  

<?xml version="1.0" encoding="UTF-8"?>

   <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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

               <modelVersion>4.0.0</modelVersion>


               <groupId>com.hema</groupId>

               <artifactId>demo1</artifactId>

               <version>0.0.1-SNAPSHOT</version>

               <packaging>jar</packaging>


               <name>demo1</name>

               <description>Springboot 之旅</description>

                <!--版本采用的是最新的 2.0.1.RELEASE TODO 开发中请记得版本一定要选择 RELEASE 哦 -->

               <parent>

                      <groupId>org.springframework.boot</groupId>

                      <artifactId>spring-boot-starter-parent</artifactId>

                      <version>2.1.0.RELEASE</version>

                      <relativePath/> <!-- lookup parent from repository -->

               </parent>


               <properties>

                      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

                      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

                      <java.version>1.8</java.version>

               </properties>


               <dependencies>

                            <!--默认就内嵌tomcat 服务器-->

                   <dependency>

                         <groupId>org.springframework.boot</groupId>

                         <artifactId>spring-boot-starter-web</artifactId>

                   </dependency>

                    <!-- 测试包,当我们使用 mvn package 的时候该包并不会被打入,因为它的生命周期只在 test 之内-->

                  <dependency>

                         <groupId>org.springframework.boot</groupId>

                         <artifactId>spring-boot-starter-test</artifactId>

                         <scope>test</scope>

                  </dependency>

               </dependencies>


           <build>

                  <plugins>

                        <!-- 编译插件 -->

                         <plugin>

                                <groupId>org.springframework.boot</groupId>

                                <artifactId>spring-boot-maven-plugin</artifactId>

                         </plugin>

                   </plugins>

           </build>

</project>

主函数入口  

        注意事项: 一个项目中切记不要出现多个 main 函数,否在在打包的时候 spring-boot-maven-plugin 将找不到主函数(主动指定打包主函数入口除外…

package com.hema.demo1;


import org.springframework.boot.CommandLineRunner;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.Bean;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.ResponseBody;


import java.util.Arrays;





/*

在之前项目有些是使用这个注解 开启自动配置

@EnableAutoConfiguration

使用@EnableAutoConfiguration注解时,

必须得配置@ComponentScan(basePackages = "com.example.web, com.example.service"),

才能扫描service及web下 的类,并进行调用

但是现在官方推荐的使用这个注解

@SpringBootApplication

使用@SpringbootApplication注解 ,

可以解决根类或者配置类(我自己的说法,就是main所在类)头上注解过多的问题,一个@SpringbootApplication相当于

@Configuration,  @EnableAutoConfiguration和 @ComponentScan,并具有他们的默认属性值

*

* */

@SpringBootApplication

@Controller

public class Demo1Application {


    public static void main(String[] args) {

        SpringApplication.run(Demo1Application.class, args);

    }


    @GetMapping("/home")

    @ResponseBody

    public String home(){

        return "第一个Springboot 代码";

    }


    /****

     * 来看看 SpringBoot 默认为我们提供的 Bean名称和多少个Bean

     * @param ctx

     * @return

     */

    @Bean

    public CommandLineRunner commandLineRunner(ApplicationContext ctx){

        return args -> {

            System.out.println("来看看 SpringBoot 默认为我们提供的 Bean:");

            String[] beanNames = ctx.getBeanDefinitionNames();

            Arrays.sort(beanNames);

            System.out.println("SpringBoot 默认为我们提供"+beanNames.length+"个的Bean");

            Arrays.stream(beanNames).forEach(System.out::println);

        };

    }

}

修改Springboot默认端口 默认端口是8080  

我这里使用的是传统配置 application.properties 也可以使用 application.yml

     附上yml配置方式

@RestController = @Controller+@ResponseBody 通过源码可以看到结果

在浏览器上输入 http://localhost/demo:8989

出现这个 说明springboot 第一个demo 成功跑起来了  喜欢的麻烦 githua 上点个小星星

githua  代码如下 https://github.com/zhouwei520/Springboot/tree/master/demo

猜你喜欢

转载自blog.csdn.net/qq_32048567/article/details/85697291