SpringBoot是由Pivotal团队提供的全新框架
,其设计目的是用来简化Spring应用的 初始搭建以及开发过程
。该框架使用了特定的方式来进行配置
,从而使开发人员不 再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
本教程使用的SpringBoot版本为2.5.0(自2.4.0开始,版本号后面不再有RELEASE
)
创建完整的独立的Spring应用程序
:在SSM框架中存在父子容器的概念,在SpringBoot中只有一个容器嵌入的Tomcat,无需部署WAR文件
: SpringBoot内嵌tomcat,应用跑在内嵌服务器简化Maven配置,自动配置Spring与Springmvc,不需要配置XML
:SpringBoot只需要一个依赖就能引入原先SSM中需要N多依赖才能引入的Spring家族依赖springboot项目中必须在src/main/resources中放入application.yml(.properties)核心配置文件,名字必须为application
springboot项目中必须在src/main/java中所有子包之外构建全局入口类xxApplication.java,一个springboot项目只能有一个入口类
jdk 1.8.+
maven 3.6.3
SpringBoot 2.5.0
打开IDEA,选择File->New->Project
,我们选择Empty Project
。在下图中填写项目名–springboot-parent
、选择项目位置,然后点击Finish
。如下图所示:
新的项目创建完毕后一定要先检查Maven的位置是不是自己本机的maven。最后点击Appky
->OK
即可
在Other Settings
中找到Log Support
,修改其Framework
为slf4j
。如下图所示:
在IDEA中依次选择File->New->Module
,我们选择Maven
。按照下图所示填写相应信息,最后点击Finish
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.christy</groupId>
<artifactId>springboot-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
server:
port: 8801 # springboot默认端口号是8080,可以通过此方式修改默认端口号
servlet:
context-path: /springboot # springboot默认是不带项目名的,可以通过此方式配置项目名,但是项目名前面必须跟'/'
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author Christy
* @Date 2021/9/1 9:56
*
* @SpringBootApplication 该注解作用于入口类,有且只有一个
* 该注解是一个组合注解,有以下7个注解修饰
* @Target({ElementType.TYPE}) 该注解表示被修饰注解的作用范围
* @Retention(RetentionPolicy.RUNTIME) 该注解表示被修饰注解的作用时机
* @Documented
* @Inherited
* 以上4个注解称之为元注解(修饰注解的注解)
*
* @SpringBootConfiguration 标识这是一个springboot的配置类,默认自定配置Spring环境
* @EnableAutoConfiguration 自动与项目中集成的第三方技术进行集成。比如redis、es等
* @ComponentScan 扫描入口类所在子包以及子包后代包中注解
**/
@SpringBootApplication
public class SpringBoot01MavenApplication {
public static void main(String[] args){
// args: 该参数可以在启动时指定jvm参数覆盖默认配置
SpringApplication.run(SpringBoot01MavenApplication.class, args);
}
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author Christy
* @Date 2021/9/1 10:12
*
* @RestController: 表示该类是一个Controller用来接收HTTP请求
* 该注解等价于@Controller + @ResponseBody
* @ResponseBody 该注解用于将Controller的方法返回的对象,
* 通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
* 使用此注解此次请求将不再走视图处理器,而是直接将此响应结果写入到输入流中,其效果等同于使用response对象输出指定格式的数据
* @Component 通用的对象创建注解.在spring工厂中创建当前对象(通俗的讲就是将当前对象交由Spring管理)
* @Controller 用来创建控制器对象
* @Service 用来创建业务层对象
* @Repository` 用来创建DAO层对象
**/
@RestController
@RequestMapping("test")
public class TestController {
private static final Logger log = LoggerFactory.getLogger(TestController.class);
@RequestMapping("hello")
public String sayHello(){
log.info("Hello SpringBoot!");
return "Hello SpringBoot!";
}
}
我们直接运行main函数,启动当前项目。如下图所示:
由于我们配置了context-path
,所以我们的访问路径应该是http://localhost:8801/springboot/test/hello
。如下图所示:
在IDEA中依次选择File->New->Module
,我们选择Spring initializr
。按照下图所示填写相应信息,最后点击Next
在Dependencies
中选择Spring Web
,最后点击Finish
。如下图所示:
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/>
</parent>
<groupId>com.christy</groupId>
<artifactId>springboot-02-initializr</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-02-initializr</name>
<description>Demo project for Spring Boot</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>
</dependency>
</dependencies>
<build>
<plugins>
<!-- maven的运行插件,默认Maven方式创建的项目(空架构)是没有该插件的需要手动添加
如果没有该插件的话,则打包成jar包后通过java -jar 运行是会报无法加载到主类的错误
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Spring Initializr
方式创建的项目配置文件默认为.properties
,这里我们手动修改为.yml
这里我们不设置context-path
server:
port: 8802
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Springboot02InitializrApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot02InitializrApplication.class, args);
}
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author Christy
* @Date 2021/9/1 11:06
**/
@RestController
@RequestMapping("test")
public class TestController {
private static final Logger log = LoggerFactory.getLogger(TestController.class);
@RequestMapping("hello")
public String sayHello(){
log.info("Hello SpringBoot!");
return "Hello SpringBoot!";
}
}
直接启动项目,浏览器访问http://localhost:8802/test/hello
。如下图所示:
在实际开发过程中生产环境和测试环境有可能是不一样的,因此将生产中的配置和测试中的配置拆分开是非常必要的。在springboot中也提供了配置文件拆分的方式。这里以开发与生产中端口号不一致为例,在Springboot-02-Initializr
中举例说明
# 开发环境端口号是8802
server:
port: 8802
# 生产环境端口号是8803
server:
port: 8803
#在主配置中指定那个环境生效配置
spring:
profiles:
active: dev #指定那个环境配置生效 dev为环境配置文件的简名
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author Christy
* @Date 2021/9/1 11:06
**/
@RestController
@RequestMapping("test")
public class TestController {
private static final Logger log = LoggerFactory.getLogger(TestController.class);
@Value("${server.port}")
private Integer port;
@RequestMapping("hello")
public String sayHello(){
log.info("Hello SpringBoot!");
return "Hello SpringBoot! current port is " + port;
}
}
启动项目。浏览器直接访问http://localhost:8802/test/hello
。由于我们当前使用的dev
的配置文件,所以访问端口号8802是通的,8803则无法访问。如下图所示:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://hardy.blog.csdn.net/article/details/120130026
内容来源于网络,如有侵权,请联系作者删除!