网上有很多关于SpringBoot的教程和博文,但是有的确实不够详细,因为业务场景不同,所以所需的工程结构也不同,最近开始参与一些Java的项目开发,涉及的都是比较常用和基础的,在此我把详细搭建项目的过程记录下来,包括热部署配置,application.yml配置文件,依赖项及entity层,mapper层,controller层,service层的代码编写等过程,以备后续查看。
如果IDEA是社区版,就要先安装一个叫SpringAssistant插件,用它来创建Spring项目比较省事,当然也可以不装它,用其他方式创建SpringBoot项目。安装的方法很简单,就是先搜索出来,点安装,安装之后需要重启IDEA。
点击新建Project后,用SpringAssistant插件创建SpringBoot项目,如图
注意新建项目时,必须要连接互联网。之后输入一写必备的项目名称等信息,就创建完成了。
pom.xml 增加热部署依赖包
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-devtoolsartifactId>
<scope>runtimescope>
<optional>trueoptional>
dependency>
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项目创建成功!
修改类–>保存:应用会重启
修改配置文件–>保存:应用会重启
修改页面–>保存:应用不会重启,但会重新加载,页面会刷新
首先也是配置安装依赖项,这里采用druid数据源类库包。
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.3.1version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.22version>
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);
}
}
在域名主目录下新建mapper包和service包目录,在service目录下在新建impl包目录,具体的工程目录结构最后实现如下:
@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;
}
public interface TbUserMapper extends BaseMapper<TbUser> {
}
public interface IUserService {
List<TbUser> GetAllUsers();
}
@Service
public class UserService implements IUserService {
@Autowired
private TbUserMapper userMapper;
@Override
public List<TbUser> GetAllUsers() {
List<TbUser> userList = userMapper.selectList(null);
return userList;
}
}
@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打印的日志
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<mainClass>cn.zhousonglin.mylearnlab.MyspringlearnApplicationmainClass>
configuration>
plugin>
plugins>
build>
@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());
}
}
nohup java -jar myspringlearn-0.0.1-SNAPSHOT.jar &
到这里搭建就基本完成,后续添加其他的应用时,再持续更新!