SpringBoot入门

原有Spring优缺点:

优点分析:

Spring是Java企业版(JEE,也称J2EE)的轻量级代替品,无需开发重量级的Enterprise JavaBean,通过依赖注入和面向切面编程,用简单的的Java对象实现EJB方法

缺点分析:

Spring组件代码是轻量级的,配置是重量级的,一开始Spring引入很多XMl配置,Spring2.5引入了基于注解的组件扫描,
这消除了大量针对应用程序自身组件的显式XML
配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样Spring实用,但与此同时它要求的回报也不少。除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,
而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题,就会严重阻碍项目的开发进度。

SpringBoot概述:

SpringBoot使用“习惯优于配置”的理念让你的项目快速运行起来,使用其很快创建一个独立运行、准生产及别的基于Spring框架的项目,使用SpringBoot你可以不用或者只需要很少的Spring配置。

SpringBoot解决了Spring的缺点:

基于约定优于配置的思想,让开发人员不必在配置和逻辑业务之间进行思维的切换,全身心投入到逻辑业务的代码编写中,大大提高了开发的效率,一定程度缩短了项目周期

SpringBoot的核心功能

1)独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,运行一个 Spring Boot 项目只需通过 java–jar xx.jar 来运
行。

2)内嵌 Servlet 容器

Spring Boot 可选择内嵌 Tomcat、Jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。
3)提供 starter(起步依赖) 简化 Maven 配置
Spring 提供了一系列的 starter pom 来简化 Maven 的依赖加载,例如,当你使用了spring-bootstarter-web 时,会自动加入相关的依赖包。

4)自动配置 Spring

Spring Boot 会根据在类路径中的 jar 包、类,为 jar 包里的类自动配置 Bean,这样会极大地减少我们
要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发
中我们需要自动配置 Bean,而 Spring Boot 没有提供支持,则可以自定义自动配置。

5)准生产的应用监控

Spring Boot 提供基于 http、ssh、telnet 对运行时的项目进行监控。

6)无代码生成和 xml 配置

Spring Boot 的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是 Spring 4.x 提
供的新特性。Spring 4.x 提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可
实现 Spring 的所有配置。

SpringBoot入门

创建父项目:

相应配置如图
父项目配置图
在项目的pom.xml添加配置,首先添加父项目的父亲项目

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

父项目中不写入实际代码,只提供依赖版本控制,所以将父项目的 src 目录删除,并将父项目的
package 项的值设置为 pom

<groupId>org.example</groupId>
  <artifactId>SpringBoot-ParentDemo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

添加版本参数和依赖管理

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.version>3.8.1</maven.compiler.version>
<maven.surefire.version>2.9</maven.surefire.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<lombok.version>1.18.18</lombok.version>
<junit.version>4.13.1</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<!--lombok工具-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!-- JUnit单元测试依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

指定编译插件版本

<build>
<pluginManagement>
<plugins>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!-- 自动单元测试插件,这里配置打包时跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.version}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<resources>
<!-- 将 java 源代码目录中的 xml 文件输出到目标目录 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- 将资源文件夹中的所有文件,输出到目标目录 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>

注意:
Maven中dependencyManagement提供了一种管理版本号的方式,在之中声明所依赖的jar包的版本号等信息,所有子项目再次引入此依赖时无需显式的列出版本号,Maven会沿着父子层级向上寻找拥有dependencyManagement元素的项目,使用它指定的版本号
build标签中的pluginManagement标签也是这个功能

创建子模块(注意是模块)

配置如图:
子模块配置图

注意:子模块建立在父项目目录下,ArcheType设置为quickstart
如图:
父子项目关系图
子模块引入起步依赖和日志与单元测试依赖,无需添加版本号

 <dependencies>
    <!-- 引入 springBoot 的 web 起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    <!-- 引入 lombok 注解库依赖-->
         <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- 引入单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

引入编译插件(无需引入版本号和参数)

<build>
        <plugins>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <!-- 自动单元测试插件,这里配置打包时跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

在子模块添加启动类Application
添加启动类Application
注意:
1.启动类必须置与Service层,controller层同层
2.在pom.xml中如图位置“11”改为“8”,否则报错找不到SpringApplication类
修改处

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application
{
    public static void main(String[] args )
    {
        SpringApplication.run(Application.class);
    }
}

子模块添加controller控制器

package org.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello(){
        return "hello SpringBoot";
    }
}

控制器-测试
#详细配置信息请关注下一节快速创建web项目

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao666yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值