springboot 接口项目完整搭建

网上有很多关于SpringBoot的教程和博文,但是有的确实不够详细,因为业务场景不同,所以所需的工程结构也不同,最近开始参与一些Java的项目开发,涉及的都是比较常用和基础的,在此我把详细搭建项目的过程记录下来,包括热部署配置,application.yml配置文件,依赖项及entity层,mapper层,controller层,service层的代码编写等过程,以备后续查看。

1. IDEA安装SpringAssistant插件

如果IDEA是社区版,就要先安装一个叫SpringAssistant插件,用它来创建Spring项目比较省事,当然也可以不装它,用其他方式创建SpringBoot项目。安装的方法很简单,就是先搜索出来,点安装,安装之后需要重启IDEA。
SpringAssistant插件

2. 创建SpringBoot项目
2.1 新建项目

点击新建Project后,用SpringAssistant插件创建SpringBoot项目,如图
SpringAssistant插件创建SpringBoot项目
注意新建项目时,必须要连接互联网。之后输入一写必备的项目名称等信息,就创建完成了。

2.2 配置热部署及端口
  • 在域名统计目录下创建包目录controller,entity,service,config,分别用于放置控制器,实体,服务,配置等类文件。
  • 将原来生成的配置文件更名为 application.yml,打开后配置服务启动的端口号,配置热部署

pom.xml 增加热部署依赖包

        <!--devtools热部署-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
  • IDEA配置热部署
  1. “File”->“Settings”->“Build,Execution,Deplyment”->“Compiler”
    选中打勾"Build project automatically"
  2. 组合键:“Shift+Ctrl+Alt+/”“选择"Registry”,
    选中打勾"compiler.automake.allow.when.app.running"
server:
  port: 8088
  
spring:
  devtools:
    restart:
      enabled: true  #设置开启热部署
      additional-paths: src/main/java #重启目录
      exclude: WEB-INF/**
  freemarker:
    cache: false    #页面不加载缓存,修改即时生效

  • 编写接口运行项目

在controller下创建第一个控制器HomeController

@Controller
@RequestMapping("/test")
public class HomeController {
    @RequestMapping("/hello.json")
    public @ResponseBody String Hello(){
        return "Hello World!";
    }
}

编译后运行,在浏览器里输入:http://127.0.0.1:8088/test/hello.json
页面显示 Hello World! 后则证明 spingboot项目创建成功!
配置运行截图

  • 测试

修改类–>保存:应用会重启
修改配置文件–>保存:应用会重启
修改页面–>保存:应用不会重启,但会重新加载,页面会刷新

3. 配置Mysql及mybatis-plus

首先也是配置安装依赖项,这里采用druid数据源类库包。

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.22</version>
</dependency>

然后再在配置文件application.yml中配置数据源及mybatis-plus的相关配置

  datasource:
    name: sp
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xxxx.xxxx:3906/mylearnlab?characterEncoding=utf8&useSSL=false
    username: xxx
    password: xxxxxxxx
    type: com.alibaba.druid.pool.DruidDataSource
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20
# 配置打印sql语句
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

最后还要在程序入口main方法上添加注解

@SpringBootApplication(scanBasePackages = {"cn.zhousonglin"})
@MapperScan("cn.zhousonglin")
public class MyspringlearnApplication {
	public static void main(String[] args) {
		SpringApplication.run(MyspringlearnApplication.class, args);
	}
}
4. 编写service及mapper层

在域名主目录下新建mapper包和service包目录,在service目录下在新建impl包目录,具体的工程目录结构最后实现如下:

4.1 项目工程结构

项目最终结构

4.2 entity实体层代码
@Data
@TableName(value = "tb_user")
public class TbUser {
    @TableId("id")
    private int id;
    @TableField("name")
    private String name;
    @TableField("age")
    private int age;
    @TableField("roleId")
    private int roleId;
    @TableField(exist = false)
    private String role;
}
4.3 mapper 层代码
public interface TbUserMapper extends BaseMapper<TbUser> {
}
4.4 service 接口层代码
public interface IUserService {
    List<TbUser> GetAllUsers();
}
4.5 service的实现层impl代码
@Service
public class UserService implements IUserService {

    @Autowired
    private TbUserMapper userMapper;

    @Override
    public List<TbUser> GetAllUsers() {
        List<TbUser> userList = userMapper.selectList(null);
        return  userList;
    }
}
5. 编写controller层及运行
@Controller
@RequestMapping("/test")
public class HomeController {

    @Autowired
    private IUserService userService;

    @RequestMapping("/getAllUsers.json")
    public @ResponseBody Object GetAllUsers(){
        return  userService.GetAllUsers();
    }
}

输入http://127.0.0.1:8080/test/getAllUsers.json 执行运行结果
接口运行截图
顺便可以看看sql打印的日志
sql打印日志截图

6. 简单打包部署
  • 首先要先配置pox.xml中Maven插件的入口类名称
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<mainClass>cn.zhousonglin.mylearnlab.MyspringlearnApplication</mainClass>
			</configuration>
		</plugin>
	</plugins>
</build>

  • 其次在Main方法中增加构建代码
@SpringBootApplication(scanBasePackages = {"cn.zhousonglin"})
@MapperScan("cn.zhousonglin")
public class MyspringlearnApplication extends SpringBootServletInitializer {
	public static void main(String[] args) {
		SpringApplication.run(MyspringlearnApplication.class, args);
	}

	@Override //为了打包springboot项目
	protected SpringApplicationBuilder configure(
			SpringApplicationBuilder builder) {
		return builder.sources(this.getClass());
	}
}
  • 之后就是执行Maven命令,先Clean,再Install,最后再target目录下面找到已经打好的包。
    编译成功的java包
  • 部署也很简单,将打好的包上传到服务器中,执行运行命令即可完成部署。
nohup java -jar myspringlearn-0.0.1-SNAPSHOT.jar &

到这里搭建就基本完成,后续添加其他的应用时,再持续更新!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐