Spring Boot系列 —(一)手把手搭建 SpringBoot 项目
新建 SpringBoot 项目
直接通过 IDEA 来生成一个 Spring Boot 的项目,具体方法和上面类似:File->New->Project->Spring Initializr
注意勾选上 Spring Web 这个模块,这是我们所必需的一个依赖。当所有选项都勾选完毕之后,点击下方的按钮 Generate 下载这个 Spring Boot 的项目。下载完成并解压之后,我们直接使用 IDEA
项目结构分析
创建好项目后,自动生成项目结构如下图所示
以 Application 为后缀名的 Java 类一般就是 Spring Boot 的启动类,比如本项目的启动项目就是 SpringbootProjApplication 。我们直接像运行普通 Java 程序一样运行它,由于 Spring Boot 本身就嵌入 servlet 容器的缘故,我们的 web 项目就运行成功了, 非常方便。
需要注意的一点是 Spring Boot 的启动类是需要最外层的,不然可能导致一些类无法被正确扫描到,导致一些奇怪的问题。 一般情况下 Spring Boot 项目结构类似下面这样
com+- yidahu+- springbootproj+- SpringbootProjApplication.java|+- domain| +- User.java|+- repository| +- UserRepository.java|+- service| +- UserService.java|+- controller| +- UserController.java|+- config| +- swagerConfig.java|
- Application.java 是项目的启动类
- domain 目录主要用于实体(Entity)
- repository 居于业务层和数据层之间,将两者隔离开来,在它的内部封装了数据查询和存储的逻辑
- service 层主要是业务类代码
- controller 负责页面访问控制
- config 目录主要放一些配置类
@SpringBootApplication 注解分析
SpringbootProjApplication.java
@SpringBootApplication
public class SpringbootProjApplication {public static void main(String[] args) {SpringApplication.run(SpringbootProjApplication.class, args);}
}
@SpringBootApplication
,这个注解的相关代码如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {@AliasFor(annotation = EnableAutoConfiguration.class)Class<?>[] exclude() default {};....
}
SpringBootConfiguration.java
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {@AliasFor(annotation = Configuration.class)boolean proxyBeanMethods() default true;
}
可以看出大概可以把 @SpringBootApplication 看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。根据 SpringBoot 官网,这三个注解的作用分别是:
@EnableAutoConfiguration:启用 SpringBoot 的自动配置机制 @ComponentScan: 扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。 @Configuration:允许在上下文中注册额外的 bean 或导入其他配置类。 所以说 @SpringBootApplication 就是几个重要的注解的组合,为什么要有它?当然是为了省事,避免了我们每次开发 Spring Boot 项目都要写一些必备的注解。这一点在我们平时开发中也经常用到,比如我们通常会提一个测试基类,这个基类包含了我们写测试所需要的一些基本的注解和一些依赖。
新建 Controller
上面说了这么多,我们现在正式开始写 Spring Boot 版的 “Hello World” 吧。
新建一个 controller 文件夹,并在这个文件夹下新建一个名字叫做 HelloWorldController 的类。
@RestController 是 Spring 4 之后新加的注解,如果在 Spring4 之前开发 RESTful Web 服务的话,你需要使用@Controller 并结合@ResponseBody 注解,也就是说@Controller +@ResponseBody= @RestController。对于这两个注解,我在基础篇单独抽了一篇文章来介绍。
com.yidahu.springbootbase.controller
@RestController
@RequestMapping("springboot")
public class HelloWorldController {@GetMapping("/hello")public String getHello() {return "Hello SpringBoot !";}
}
默认情况下,Spring Boot 项目会使用 8080 作为项目的端口号。如果我们修改端口号的话,非常简单,直接修改 application.properties
配置文件即可。
src/main/resources/application.properties
server.port=8080
运行项目
运行 SpringbootProjApplication ,运行成功控制台会打印出一些消息,不要忽略这些消息,它里面会有一些比较有用的信息
通过 GET 方式访问http://localhost:8080/springboot/hello
就可以获取到返回数据了
总结
通过本文我们学到了如何新建 Spring Boot 项目、SpringBoot 项目常见的项目结构分析、@SpringBootApplication 注解分析,最后实现了 Spring Boot 版的 "Hello SpringBoot !"。
Spring Boot系列 —(一)手把手搭建 SpringBoot 项目相关推荐
- Spring Boot 学习(一) 快速搭建SpringBoot 项目
快速搭建一个 Spring Boot 项目 部分参考于<深入实践Spring Boot>.<Spring实战 第四版>与程序猿DD的有关博客. 参考(嘟嘟独立博客):http: ...
- Spring Boot系列 —(六)SpringBoot 多项目实现 RocketMQ 生产消费
Maven 配置 生产者和消费者都添加 rocketmq 配置 pom.xml 添加如下配置 <!-- rocketmq --> <dependency><groupId ...
- springboot做系统所需的软硬件环境_最新Spring Boot实战文档推荐:项目搭建+配置+SSM整合...
在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用XML,注意,排不支持,Spring Boot推荐开发者使用Java配置来搭建框架, Spring ...
- 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 Spring Boot Test集成测试环境搭建
文章目录 集成测试 @SpringBootTest的集成测试 Spring Boot Test集成测试环境搭建 参考 源代码 集成测试 集成测试(Integration Testing,缩写为INT) ...
- ssm如何支持热部署_最新Spring Boot实战文档推荐:项目搭建+配置+SSM整合
在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用XML,注意,排不支持,Spring Boot推荐开发者使用Java配置来搭建框架, Spring ...
- Spring Boot + vue-element 开发个人博客项目实战教程(四、数据库搭建和配置)
前言 java项目已经创建好了,接下来我们要准备数据库了,数据库是干嘛的相信大家都知道了,我在这就不说了,我们需要做的就是在电脑上安装mysql数据库. 附菜鸟教程的MySQL基础学习教程:https ...
- java+spring+mysql配置_JAVA后台搭建(springboot+mybatis+mysql)项目搭建
前言 上篇文章写了基本环境配置的搭建,接下来我们需要搭建项目了,项目搭建使用的IDEA,springboot项目的搭建非常快只需要几分钟,然后介绍MyBatis以及MySql的基本配置以及项目的Hel ...
- 快速搭建Springboot项目的两种方式!!
大家好,我是雄雄,欢迎关注微信公众号[雄雄的小课堂]. 前言 Springboot的特点就是简单.快速和方便,使用idea不到一分钟就可以快速搭建springboot项目,并且,在这里,你不用写spr ...
- Spring Security系列教程03--创建SpringSecurity项目
前言 在上一章节中,一一哥 已经带大家认识了Spring Security,对其基本概念已有所了解,但是作为一个合格的程序员,最关键的肯定还是得动起手来,所以从本篇文章开始,我就带大家搭建第一个Spr ...
- 国内最全的Spring Boot系列之五
历史文章(累计400多篇文章) <国内最全的Spring Boot系列之一> <国内最全的Spring Boot系列之二> <国内最全的Spring Boot系列之三& ...
最新文章
- ohmyzsh用在mysql_oh-my-zsh,让你的终端从未这么爽过
- proftpd mysql_Proftpd(MySQL验证+配额)
- cve-2019-7609 Kibana远程代码执行漏洞攻击方法和漏洞原理分析
- Git远程:分支的upstream
- Python才排第8名!2018增速最快TOP 10编程语言盘点
- java多线程模拟实现12306售票
- mysql c null_MySQL中NULL字段的比较问题
- ARP协议及欺骗原理
- 惠普服务器如何选择光驱启动不了系统,惠普笔记本bios设置光盘启动方法
- js exploit
- ufs2.1 android bench,一加UFS 3.0手机极限测试 对比UFS2.1测评
- 共享资源计算机的用户名和密码,电脑共享文件为什么提示要用户名密码?
- 回不去的童年,归不了的故乡
- 云服务器查看物理MAC地址的方法
- Windows7 VS2015 下编译 PythonQt3.2
- linux 查看内存 udimm rdimm,关于内存类型UDIMM、RDIMM、LRDIMM
- 服务器打包文件工具,项目增量发版之全自动打包流程(patch-generator-desk打包软件)...
- 一个合格的中级前端工程师需要掌握的技能笔记(上)
- 一文了解常用效率记笔记软件
- 武汉市科技重大专项项目榜单申报条件、流程时间