已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结。

之前在网上找过不少关于springboot的教程,都是一些比较粗糙的文章,就连百度百科也是少的可怜,所以进度一直跟不上计划。下面根据我这几天的学习和摸索,谈谈我对spring和springboot的区别,以及很多业界人士说它的快速开发,到底是快在哪儿,方便在哪儿?首先我认为在项目的架构搭建方面变得极其利索,不再需要像之前一样整合ssh或ssm那样进行一大堆的配置文件,他只是通过一个application入口类来配置所有的配置项,包括spring的一些默认配置项;其次springboot它没有太多自己的特性,没有完全颠覆之前的开发模式,反而提供了更加便捷的方式来集成了原来的开发模式,只能说换了一种快速的方式来提高开发速度。

废话我也不多说了,也说不了,后面我会把我这几天的整合过程详细给大家总结下来,初次接触如有地方有误的,望及时指正。

项目结构详解:

1、pom文件详解

pom文件中各项依赖的作用见代码注释。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zxz.boot</groupId>
<artifactId>springboot_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.4.RELEASE</version>
</parent> <dependencies>
<!--Spring Boot-->
<!--支持 Web 应用开发,包含 Tomcat 和 spring-mvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--支持使用 JDBC 访问数据库-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--添加适用于生产环境的功能,如性能指标和监测等功能。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- springboot的热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!--Mysql / DataSource-->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
<!--Json Support-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.43</version>
</dependency>
<!--Swagger support-->
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.9.5</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies> <!-- 使用插件来运行springboot(运行springboot的方式有2种:main方法运行或使用下面的插件运行) -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> <repositories>
<repository>
<id>spring-milestone</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>

2、项目的入口类application.java详解

先介绍一下在入口类中需要用到的常用注解:

@SpringBootApplication:这是一个组合注解,聚合了多个注解的功能,包含:排除自启动项、排除自启动项的beanname、扫描包和扫描类。【建议瞜一眼源码更好】

@EnableAutoConfiguration:这个注解是用来启动springboot中的自动配置项目,必须的加上,否则无法正常使用springboot默认配置的配置项目。

@ComponentScan :扫描controller层和service层中所有类上的注解(这个注解可以不加,因为组合注解@SpringBootApplication已经可以扫描)。

@MapperScan("com.zxz.mapper") :管理mybatis中所有mapper接口的代理对象。

@EnableTransactionManagement(proxyTargetClass = true):开启事务管理的注解。

 /**
* 整个项目的入口
*/
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@MapperScan("com.zxz.mapper")
@EnableTransactionManagement(proxyTargetClass = true)
public class Application { private static Logger logger = Logger.getLogger(Application.class);
//启动类
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("======spring boot start success ===========");
}
}

因为我的项目最后是需要和mybatis整合的,所以在该入口类中必定有一些数据源、每层包扫描和注解扫描、管理mybatis中mapper接口的代理对象和事务管理器等一些必要的配置项。还有通过我上面的项目结构发现,mybatis的sql文件是放置在了resources文件下,所以还得通过配置映射到相应的xml文件中去等等,这些事情都需要借助该入口类来完成。

连接池配置:

首先得配置好连接数据库的一些参数,之前我们是通常配置在某资源文件中,然后通过spring的配置文件进行加载到的,这里我们也需要将连接参数配置到SpringBoot规定的文件application.properties中,最后在入口类中通过注解加载即可。

application.properties配置内容:

 server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/zxz
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.com.zxz.mapper=debug

在入口类中通过注解加载:

 @Bean
@ConfigurationProperties(prefix = "spring.datasource") //作用:加载application.properties文件中的数据库连接参数
public DataSource dataSource(){
return new DataSource();
5 }

但是到这儿,可能很多哥们儿就有点说法了,现在大多数都是使用阿里的Druid数据源,因为性能好,但是在这里配置并没有指定数据源的具体类型,难道默认使用的是Druid,不是的,springboot还不至于这么完美,目前它仅仅支持dbcp、dbcp2、hikari三种数据库连接池。要是你就想要使用druid作为项目中的数据源,那么你就要费点儿力点开下面的代码,只需将它们复制到你的入口类中即可:

 /**
* 注册DruidServlet
* @return
*/
@Bean
public ServletRegistrationBean druidServletRegistrationBean() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
servletRegistrationBean.setServlet(new StatViewServlet());
servletRegistrationBean.addUrlMappings("/druid/*");
return servletRegistrationBean;
}
/**
* 注册DruidFilter拦截
* @return
*/
@Bean
public FilterRegistrationBean duridFilterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
Map<String, String> initParams = new HashMap<String, String>();
//设置忽略请求
initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.setInitParameters(initParams);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
/**
* 配置DruidDataSource
* @return
* @throws SQLException
*/
@Bean
public DruidDataSource druidDataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUsername("root");
druidDataSource.setPassword("123");
druidDataSource.setUrl("jdbc:mysql://localhost:3306/zxz");
druidDataSource.setMaxActive(100);
druidDataSource.setFilters("stat,wall");
druidDataSource.setInitialSize(10);
return druidDataSource;
}

事务管理器配置:

       //配置transactionManager
@Bean
public PlatformTransactionManager transactionManager() throws SQLException{
return new DataSourceTransactionManager(druidDataSource());
}

mybatis中mapper.xml文件的映射配置:

因为是和mybatis的整合,免不了mapper.xml的加载和映射,springboot提供了专门的方式来加载它们。

    //提供sqlSession
@Bean
public SqlSessionFactory sqlSessionFactory(PageHelper pageHelper)throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(druidDataSource());
sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageHelper});
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml"));
return sqlSessionFactoryBean.getObject();
}

如果上面最基本的各项配置都差不多了,你就可以运行入口类中的伟大的main方法,看到如下界面没有报错信息则表示整合成功,各位尽量写个能访问数据库的业务逻辑来验证整合结果,这里因为时间问题我就不粘贴了:

 好了,到这儿我也快收工了,今天就总结到这儿吧,下次继续给各位总结springboot整合mybatis的分页插件pageHelper、springboot的热部署和springboot的日志加载等,与君共勉。

SpringBoot整合Mybatis之项目结构、数据源的更多相关文章

  1. SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)

    1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...

  2. 三、SpringBoot 整合mybatis 多数据源以及分库分表

    前言 说实话,这章本来不打算讲的,因为配置多数据源的网上有很多类似的教程.但是最近因为项目要用到分库分表,所以让我研究一下看怎么实现.我想着上一篇博客讲了多环境的配置,不同的环境调用不同的数据库,那接 ...

  3. springBoot 整合 mybatis 项目实战

    二.springBoot 整合 mybatis 项目实战   前言 上一篇文章开始了我们的springboot序篇,我们配置了mysql数据库,但是我们sql语句直接写在controller中并且使用 ...

  4. SpringBoot整合Mybatis多数据源 (AOP+注解)

    SpringBoot整合Mybatis多数据源 (AOP+注解) 1.pom.xml文件(开发用的JDK 10) <?xml version="1.0" encoding=& ...

  5. SpringBoot整合Mybatis【非注解版】

    接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 ​ 选择Spring Initializr,配置JDK版本 ​ 输入项目名 ​ 选择构建web项目所需的state ...

  6. SpringBoot整合Mybatis之进门篇

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  7. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例

    1.前言 本文主要介绍使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例. 使用技术:SpringBoot.mybatis.shiro.thymeleaf.pagehelp ...

  8. springboot整合mybatis(SSM开发环境搭建)

    0.项目结构: ---------------------方法一:使用mybatis官方提供的Spring Boot整合包实现--------------------- 1.application.p ...

  9. MyBatis原理,Spring、SpringBoot整合MyBatis

    1. MyBatis概述 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

随机推荐

  1. tomcat 修改为自己项目界面

    修改Tomcat欢迎界面为自己项目界面 Posted on 2011-04-16 13:10 IceWee 阅读(1062) 评论(0)  编辑  收藏 所属分类: Tomcat  由于项目要发布到互 ...

  2. OpenCV 之 图像分割 (一)

    1  基于阈值 1.1  基本原理 灰度阈值化,是最简单也是速度最快的一种图像分割方法,广泛应用在硬件图像处理领域 (例如,基于 FPGA 的实时图像处理). 假设输入图像为 f,输出图像为 g,则经 ...

  3. Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

    1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...

  4. 优雅的封装ajax,含跨域

    之前写过一篇 先定一个小目标,自己封装个ajax,是基于原生js的,也就是jquery中ajax的简化版本实现的思路.众所周知,jquery的ajax是项目中最常用的请求后台的方式,也算是封装的很完美 ...

  5. HTML5 drag和drop的亲手实践

    起因 最近在公司打杂的时候,突然分到了一个锅,就是要支持一个新的功能:用户可以通过拖曳组件来改变组件的顺序.因此,这阵子就看了一下网上的一些drag和drog的文章以及W3C的介绍,然后自己亲手实践了 ...

  6. 高效测试用例组织算法pairwise之Python实现

    ------------------------------------------本文专为<光荣之路培训 >原创,如有转载请注明出处--------------------------- ...

  7. 打印水仙花数(narcissus number)

    题目:打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个" ...

  8. DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension)

    跟大家的交流是我的动力. :) DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★ ...

  9. 关于tomcat下startup.bat双击闪退的问题

    背景:之前做单点登录,复制了几个tomcat,改了各自端口,当做不同服务器用. 今天无意间随便点击了一个tomcat下的startup.bat批处理文件,结果出来控制台,没出几行信息就闪退了.点击其他 ...

  10. 微信小程序怎么用?线下商家最适合玩小程序

    随着微信小程序不断地释放新功能,许多行业越来越关注小程序,目前已经有不少餐饮和线下传统零售企业开始谋划利用好小程序.但是,线下商业有着复杂的场景,如何针对自己行业的特点和需求开发出属于自己的小程序,是 ...