SpringBoot學習笔记(一)创建与发布
文章目录
创建第一个springBoot工程
先如下图创建第一个SpringBoot程序—HelloWord。
先创建一个Maven工程。再导入响应的依赖。
pom.xml
<?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.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 这是一个父项目,依赖管理 -->
<!-- 在该父项目的父项目org.springframework.boot.spring-boot-dependencies定义了依赖的版本号 -->
<!-- 它是springboot的版本仲裁中心,导入依赖默认则不需要写版本号。但没有被dependences收录的则需要进行版本声明-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hx</groupId>
<artifactId>SB_Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SB_Hello</name>
<description>SB_Hello</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
spring-boot-start:场景启动器
spring-boot-start-web:帮我们导入了web模块正常运行所需要的依赖
springBoot将所有的功能场景进行抽取,做成一个starts(启动器),在开发时,需要什么功能就导入响应的启动器。
SbHelloApplication.java
@SpringBootApplication
//核心注解:标注在类上,表示这是springBoot的启动程序,说明这是一个springBoot应用
//springBoot应当运行该类的main方法来启动springBoot应用。
public class SbHelloApplication {
public static void main(String[] args) {
SpringApplication.run(SbHelloApplication.class, args);
}
}
HelloController.java
package com.hx.hello.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping("/hi")
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello() {
return "<h1>Hello World</h1>";
}
}
访问:http://localhost:8080/hi/hello
显示Hello World表示成功!
打包发布
使用maven的install将springBoot程序打包成可执行的 xxx.jar
包。并使用 java -jar xxx.jar
运行即可。
SpringBoot的优点:
- 快速创建独立运行的Spring项目并集成主流框架
- 使用嵌入式Servlet容器,应用无需打成war包。无需开发人员手动配置Tomcat服务器。 简化部署。
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,可以修改默认值
- 无需配置xml,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算集成
eclipse插件可快速创建springBoot项目
idea自带SpringBoot快速创建
springBoot自动配置
@SpringBootApplication注解
标注在某个类上,表示该类是一个springBoot配置程序
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration //SpringBoot配置类。配置类也是容器中的一个组件
@EnableAutoConfiguration //启用自动配置。SpringBoot帮我们自动配置。告诉springBoot开启自动配置功能。
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
······
}
-
@SpringBootConfiguration
SpringBoot配置类。
@Configuration
配置类也是容器中的一个组件 -
@EnableAutoConfiguration
启用自动配置。SpringBoot帮我们自动配置。告诉springBoot开启自动配置功能。 -
@AutoConfigurationPackage
自动配置包。将主配置类(@SpringBootApplication标注类)下的所在包下的所有子包中的所有组件扫描到spring容器中。
@Import(AutoConfigurationPackages.Registrar.class)
spring底层注解,给容器中导入一个组件,导入的组件由 AutoConfigurationPackages.Registrar.class
指定
- @Import(AutoConfigurationImportSelector.class)
自动配置导入选择器。选择导入哪些组件,将所需导入的组件以全类名的方式返回。这些组件就会被添加到容器中。会给容器导入自动配置类(xxxAutoConfiguration),就会给容器导入该场景需要的所有组件,并配置好。免去了手动配置的注入组件的步骤。
本文来自博客园,作者:Huathy,遵循 CC 4.0 BY-NC-SA 版权协议。转载请注明原文链接:https://www.cnblogs.com/huathy/p/17253859.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-12-22 关于使用Gradle编译SpringBoot项目报错莫名其妙的问题;idea自动删除build好的class文件