这篇文章主要为大家展示了“Spring Boot中Idea如何从零开始初始化后台项目”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring Boot中Idea如何从零开始初始化后台项目”这篇文章吧。
1 创建项目
1.1 填写项目基本信息
打开Idea创建项目,如下图:
1.2 选择项目集成功能
完成基本信息配置,在Web,SQL,NoSQL,Ops选项中,选择对应的模块依赖,最终选择如图以下几项:
Spring Web
用于提供web相关功能Spring Data JPA
用于提供数据库相关操作MyBatis Framework
用于通过MyBatis操作数据库Spring Data Redis
用于提供Redis相关功能Spring Boot Actuator
用于提供应用的健康监测功能
设置完成后,点击下一步,Idea开始初始化项目文件。
2 项目基础配置
通过上面步骤,已生成项目结构文件,等待开发环境自动构建好依赖库后可继续后续的工作。
2.1 gradle文件配置
当前项目使用gradle管理项目依赖,默认情况下,使用官方的依赖库,国内访问较慢,可替换为阿里云仓库。在build.gradle文件的repositories节点下添加阿里云仓库访问地址,设置完成后如下
repositories { //使用阿里云仓库,提高国内依赖库下载速度 maven { url "http://maven.aliyun.com/nexus/content/groups/public" } mavenCentral()}
另外,添加其它常用依赖库,最终依赖包如下
dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2' implementation 'com.alibaba:fastjson:1.2.68' implementation 'org.apache.commons:commons-lang3:3.10' //数据库配置的日志类com.mysql.cj.log.Slf4JLogger在这个包中 runtime('mysql:mysql-connector-java') testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' }}
2.2 环境文件配置
官方初始化器默认会在resources资源文件夹下生成一个application.properties文件,这里调整一下配置文件结构。在resources资源文件夹下创建config文件夹,移动application.properties文件到config文件夹下,同时在config文件夹下创建application-dev.properties文件和application-prod.properties文件,分别对应开发环境和线上环境的配置,可根据需要增加其它环境配置文件,文件格式为application-环境名称.properties。
最终application.properties文件内容如下
#默认启动dev环境spring.profiles.active=dev#调整web后台服务端口为9080,不设置默认为8080server.port=9080#mybatis配置文件地址mybatis.config-location=classpath:mybatis/mybatis-config.xml#mybatis mapper文件地址mybatis.mapper-locations=classpath:mybatis/mapper private int status; private String description; private Object data; public HResponse() { } public HResponse(int status, String description, Object data) { this.status = status; this.description = description; this.data = data; } public static HResponse success() { return new HResponse(200, "操作成功", null); } public static HResponse success(String description) { return new HResponse(200, description, null); } public static HResponse success(Object data) { return new HResponse(200, "success", data); } public static HResponse success(String description, Object data) { return new HResponse(200, description, data); } public static HResponse error(String description) { return new HResponse(400, description, null); } public static HResponse error(String description, Object data) { return new HResponse(400, description, data); } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; }}
3.1 Redis案例
使用StringRedisTemplate对Redis进行基本操作,这里简单提供查询Redis的key值和设置Redis的key值两个操作,在CommonController中添加代码如下
private final StringRedisTemplate redisTemplate; private final SqlSession sqlSession; public CommonController(StringRedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @PostMapping("/getRedisValue") public HResponse getRedisValue(String key) { this.logger.info("请求获取redis key为:{} 的值", key); return HResponse.success(new JSONObject().fluentPut("key", key).fluentPut("value", this.redisTemplate.opsForValue().get(key))); } @PostMapping("/setRedisValue") public HResponse getRedisValue(String key, String value) { if (StringUtils.isBlank(key)) { return HResponse.error("键 不能为空"); } if (StringUtils.isBlank(value)) { return HResponse.error("值 不能为空"); } this.logger.info("请求设置redis key为:{} 的值为 {}", key, value); this.redisTemplate.opsForValue().set(key.trim(), value.trim()); return HResponse.success(); }
启动redis的docker容器并运行当前案例,使用Postman发送请求设置和查询redis中对应的key值,请求响应如下图
3.2 MySQL案例
简单介绍两种从MySQL查询数据的案例,JPA方式和MyBatis方式。先启动好MySQL的docker容器,然后创建表h_company并插入一条数据,最终数据表结果如下图:
3.2.1 JPA方式
构造HCompany数据库映射类和对应的数据库表访问接口CompanyRepository,内容如下:
@Entity@Table(name = "h_company")@Where(clause = "id > 0")public class HCompany { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String shortName; private String address; private String tel; private String remark; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getShortName() { return shortName; } public void setShortName(String shortName) { this.shortName = shortName; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; }}
@Repository@Where(clause = "id > 0")public interface CompanyRepository extends PagingAndSortingRepository<HCompany, Integer>, JpaRepository<HCompany, Integer> {}
在控制器CommonController中添加使用CompanyRepository查询数据库的方法:
@PostMapping("/getAllCompany") public HResponse getAllCompany() { return HResponse.success(this.companyRepository.findAll()); }
使用Postman调用查询,响应如下
3.2.2 MyBatis方式
使用SqlSession接口访问数据库,创建company.xmlmapper文件,内容如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="company"> <select id="getAll" resultType="java.util.Map"> select * from h_company </select></mapper>
控制器CommonController中添加通过MyBatis获取数据的方法,如下
@PostMapping("/getAllCompanyByMybatis") public HResponse getAllCompanyByMybatis() { return HResponse.success(this.sqlSession.selectList("company.getAll")); }
重新启动项目,然后通过Postman访问,响应如下:
3.3 控制器完整代码
完成以上步骤后,控制器CommonController完整内容如下:
@RestController@RequestMapping("/common")public class CommonController { private Logger logger = LoggerFactory.getLogger(this.getClass()); private final StringRedisTemplate redisTemplate; private final CompanyRepository companyRepository; private final SqlSession sqlSession; public CommonController(StringRedisTemplate redisTemplate, CompanyRepository companyRepository, SqlSession sqlSession) { this.redisTemplate = redisTemplate; this.companyRepository = companyRepository; this.sqlSession = sqlSession; } @PostMapping("/getRedisValue") public HResponse getRedisValue(String key) { this.logger.info("请求获取redis key为:{} 的值", key); return HResponse.success(new JSONObject().fluentPut("key", key).fluentPut("value", this.redisTemplate.opsForValue().get(key))); } @PostMapping("/setRedisValue") public HResponse getRedisValue(String key, String value) { if (StringUtils.isBlank(key)) { return HResponse.error("键 不能为空"); } if (StringUtils.isBlank(value)) { return HResponse.error("值 不能为空"); } this.logger.info("请求设置redis key为:{} 的值为 {}", key, value); this.redisTemplate.opsForValue().set(key.trim(), value.trim()); return HResponse.success(); } @PostMapping("/getAllCompany") public HResponse getAllCompany() { return HResponse.success(this.companyRepository.findAll()); } @PostMapping("/getAllCompanyByMybatis") public HResponse getAllCompanyByMybatis() { return HResponse.success(this.sqlSession.selectList("company.getAll")); }}
4 健康监测
案例启用了完整的项目监测,可通过http://localhost:9080/actuator查看,每个监测项都对应相应的查看链接,如下图。
5 项目结构
完成以上配置及案例后,项目结构如下图:
以上是“Spring Boot中Idea如何从零开始初始化后台项目”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!