一:进入官网创建一个springboot的项目
然后会生成一个jar包,将这个包导入到项目中
新增一些依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.daojihe</groupId>
<artifactId>daojihe-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>daojihe-starter</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
就可以启动了
SpringBoot返回json数据
@RestController
@RequestMapping("/book")
public class BookController {
//todo
}
@RestController 等价于@Controller 和 @ResponseBody ,会将返回的数据转换成json数据
SpringBoot 热部署
<!-- 热部署 -->
<!-- devtools可以实现页面热部署(即页面修改后立即生效,这个确实可以在
application.properties文件中配置,配置spring.thymeleaf.cache=false来实现
实现类文件热部署(类文件修改后不会立即生效)实现对属性文件的热部署
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)
(1)base classloader(base类加载器):加载不改变class,例如第三方提供的jar包
(2)restart classloader (restarter类加载器):加载正在开发的class
为什么重启快,因为重启的时候只是加载了在开发的Class,没有重新加载第三方的jar包 -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency> -->
为热部署配置application.properties
#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录,为添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
SpringBoot资源属性配置
<!-- 资源文件读取依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
Server服务端相关配置
###################################################
#
# Server 服务端相关配置
#
##################################################
# 配置API端口号
server.port=8081
# 配置context-path ,一般来说这个配置在正式发布的时候不配置
server.servlet.context-path=/Daojihe
#错误页,指定发生错误时,页面跳转URL--> BasicErrorController
#server.error.path=/error
# session最大超时事件(分钟)默认为30分钟
server.session-timeout=60
#该服务绑定IP地址,自动服务器时如不是该IP地址则抛出异常失败
#只有特殊需求的情况下才配置,具体根据各自的业务来设置
# server.address=192.168.1.1
Tomcat相关配置
###################################################
#
# Tomcat 相关常用配置
#
##################################################
# tomcat最大线程数,默认为200
# server.tomcat.max-threads=250
# tomcat的URI编码
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日志,Dump等文件的临时文件夹,默认系统的tmp文件夹
#server.tomcat.basedir=D:/springboot-tomcat-tmp
# 打开TomcatAccess日志,并可以设置日志格式的方法:
#server.tomcat.access-log-enabled=true
# server.tomcat.access-log-pattern=
#accesslog目录 默认在basedir/logs
#server.tomcat.accesslog.directory=
#日志文件目录
#logging.path=D:/springboot-tomcat-tmp
#日志文件名称,默认为spring.log
#logging.file=myapp.log
整合mybatis:
导入mybatis依赖以及数据源
<!-- 数据源 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!-- 数据库连接器 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
数据库相关属性配置
###################################################
#
# 配置数据源相关
#
##################################################
jdbc.url=jdbc:mysql://localhost:3306/daojihe?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver
mybatis配置
###################################################
#
# mybatis 配置
#
##################################################
# mybatis 配置
mybatis.config.file=mybatis-config.xml
mapper.path=/mapper/**.xml
pojo.package=com.daojihe.pojo
在src.main.resources中加入新建mybatis.config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置全局属性 -->
<settings>
<!-- 使用JDBC的getGeneratedKeys获得数据库自增主键值 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 使用列表签替换列别名 默认:true -->
<setting name="useColumnLabel" value="true"/>
<!-- 开启驼峰命名转换:Table{create_time}-> Pojo(createTime) -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
包结构:
配置数据源
package com.daojihe.config.dao;
import java.beans.PropertyVetoException;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* 尽量减少xml配置
* @author 叶孤城
*配置数据源
*/
@Configuration
//配置mybatis mapper 的扫描路径
@MapperScan("com.daojihe.dao")
public class DataSourceConfiguration {
@Value("${jdbc.driver}")
private String jdbcDriver;
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@Bean(name="dataSource")
public ComboPooledDataSource createDataSource() throws PropertyVetoException{
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(jdbcDriver);
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setUser(jdbcUsername);
dataSource.setPassword(jdbcPassword);
dataSource.setAutoCommitOnClose(false);//
return dataSource;
}
}
配置sessionFactory
package com.daojihe.config.dao;
import java.io.IOException;
import javax.sql.DataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@Configuration
public class SessionFactoryConfiguration {
@Value("${mybatis.config.file}")
private String mybatisConfigFilePath;
@Value("${mapper.path}")
private String mapperPath;
@Value("${pojo.package}")
private String pojoPackage;
@Autowired
private DataSource dataSource;
@Bean(name="sqlSessionFactory")
public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//加载mybatis-config.xml文件
sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(mybatisConfigFilePath));
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
String packageSearchPath = PathMatchingResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + mapperPath;
System.out.println(packageSearchPath);
sqlSessionFactoryBean.setMapperLocations(resolver.getResources(packageSearchPath));
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setTypeAliasesPackage(pojoPackage);
return sqlSessionFactoryBean;
}
}
为service 添加事务管理
package com.daojihe.config.service;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
/**
* 为service层添加事务管理
* @author 叶孤城
*/
@Configuration
@EnableTransactionManagement //开启事务管理
public class TransactionManangementConfiguration implements TransactionManagementConfigurer{
@Autowired
private DataSource dateSource;
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dateSource);
}
}
自此配置完毕,其余的就是项目的业务代码