概念:
特点:
搭建SpringBoot项目:
1.
3.
4.
5.点击next然后设置项目的存储位置然后项目创建完成。
编写代码测试
在src/main/java/com.yay.springbootdemo1下创建子包controller,在子包下面创建一个名为TestController的控制器类,编写代码:
@Controller
@RequestMapping("/test")
public class TestController {
@ResponseBody
@RequestMapping("/hello")
public String sayHello(){
return "sayHello Spring boot";
}
}
打开Springbootdemo1Application类:点击main方法绿色箭头就可以运行了
然后注入url地址进行访问
SpringBoot三个核心文件
1.pom.xml
1.parent中的依赖是父依赖,有以下作用:
- 限定java版本:springBoot2.1.5版本所依赖的jdk版本为1.8及以上。
- 限定源码的文件编码方式:默认为UTF-8.
- 管理依赖:在父依赖中设置了一些公共依赖的版本号,这样开发人员在引入依赖时可以不同指定版本号,这样就不会出现版本号不符的问题。
- 打包支持:设置了一些使用maven对项目进行打包的规则。
- 动态识别资源:可以识别一些特定名称的资源文件,比如application.properties文件。
- 识别插件配置:比如exec plugin,Git commit ID,shade等
2.spring-boot-starter-web依赖:
给springBoot项目继承了使用springmvc所需要的组件,仅仅有组件还是不够的,还缺少一些springmvc的配置,这些配置信息在springboot项目中都已经配置好,并通过自动配置加载到项目中。
3.spring-boot-start-test依赖
此依赖中引入的时项目测试组件,不是必需的。
2.启动类
3.application.properties属性文件。
springboot项目启动方式
使用springboot内置容器启动
多模块项目
在idea中使用Maven构建多模块项目
使用三层架构的方式搭建项目框架,项目结构清晰,代码耦合度相对于不使用三层架构的项目降低了。但是在企业级开发中,代码量大, 项目庞大,即使使用三层架构的方式,搭建出来的项目也时比较复杂的。存在以下几个问题:
- 结构不够清晰,开发人员不能从庞大的项目中快速定位自己负责的模块。
- 项目庞大导致启动费时。
- 部署时,无法分模块扩展项目,造成资源的浪费。
为了解决这些问题,maven提出了一套多模块项目的方案。
示例:
使用Spring Initializr创建父项目Springbootdemo3
在springbootdemo3下创建子模块UserService项目和UserController项目:
打开两个子项目pom文件可以发现都有:
<parent>
<artifactId>springbootdemo3</artifactId>
<groupId>com.yay</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
继承父项目
打开父项目可以发现:
<!--聚合-->
<modules>
<module>userservice</module>
<module>userController</module>
</modules>
<!--继承springboot父项目,提供springboot依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--本项目gav坐标-->
<groupId>com.yay</groupId>
<artifactId>springbootdemo3</artifactId>
<version>0.0.1-SNAPSHOT</version>
这便是聚合:
在UserService子项目里有User类 和UserService类
如果在UserController子项目中想使用的话 在pom文件里添加如下依赖:便是UserService项目的gav坐标
<dependencies>
<dependency>
<groupId>com.yay</groupId>
<artifactId>userservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
这样在UserController项目中就可以使用UserService项目中的类
@Controller
@RequestMapping("/user")
public class UserController {
@Resource(name = "userService")
private UserService userService;
@RequestMapping("/list")
@ResponseBody
public List<User> list(){
List<User> list = userService.listUser();
return list;
}
}