博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot快速入门
阅读量:6823 次
发布时间:2019-06-26

本文共 7323 字,大约阅读时间需要 24 分钟。

前言:

正所谓,天下武功,唯快不破,在当今生活节奏越来越快的时代,我们也要讲求效率,也要追求一个字(不过有些方面还是不能快的,不要当快男哦)。springboot就是能简化配置、敏捷开发的东西。做同一个项目,用spring你可能还在写xml,用springboot的话你可能已经做完在约妹子了!

一、springboot简介:

springboot,说到底还是spring家族的,只不过用spring时我们要写大量的xml配置各种东西,而springboot不用写这些,直接写在application.properties或application.yml中即可,相当于那些复杂的配置springboot底层为我们配置好了,直接声明一下就可以。

二、springboot常用知识点:

1、springboot对静态资源的处理:

springboot项目中静态资源的根目录是:
src/main/resources/static

静态资源如html页面、图片、js、css等都放在此文件夹或该文件夹的子文件夹下。比如在static下有water.jpg图片,在没有配置视图解析器和访问根路径的情况下,

在浏览器直接输入:
http://localhost:8080/water.jpg
即可访问该图片。

一般而言,会在static下建立pages文件夹用于存放页面,js文件夹存放js代码,css文件夹存放css。

2、全局异常捕获:

当你访问页面出错时,默认是404或500以及以一大串英文,自己写了全局异常捕获类就可以在出错时显示自己写的内容。
只需要编写一个类加上注解即可,如下:

@ControllerAdvicepublic class GlobalExceptionHandler{    @ExceptionHandler(RuntimeException.class)    @ResponseBody    public Map
resultError(){ Map
modelMap = new HashMap
(); modelMap.put("errCode",500); modelMap.put("errMsg","错误!"); return modelMap; }}

这实际上是用了spring的异常通知。

3、配置多环境:

在实际开发过程中,一般可能有以下4个环境:

test         ------------------        本地开发环境sit          ------------------        测试环境pre          ------------------        预生产环境pid          ------------------        生产环境

那么如何为不同的生产环境配置不同的配置文件呢?首先得有如下5个.properties 配置

文件:

application.properties            ------------------      总配置文件    application-test.properties       ------------------      本地    application-sit.properties        ------------------      测试    application-pre.properties        ------------------      预生产    application-pid.properties        ------------------       生产

每个环境下的配置写到对应的配置文件中,然后在总配置文件application.properties中通过

spring.profiles.active =

读取不同的配置文件,=test时读取application-test.properties=sit时读取application-sit.properties

4、整合jdbcTemplate:

虽然jdbcTemplate用得不多了,也介绍一下如何整合。

添加依赖:

org.springframework.boot
spring-boot-starter-jdbc
2.0.2.RELEASE

注入使用:

在需要使用的地方直接注入使用即可,如下:

public class test{   @AutoWired   private JdbcTemplate jdbcTemplate;      public void insertUser(String name,int age){        jdbcTemplate.update("insert into tb_user values(null,?,?)",name,age);   }}

5、整合jpa:

添加依赖:

org.springframework.boot
spring-boot-starter-data-jpa
2.0.2.RELEASE

加注解:

在启动类上添加两个注解:@EntityScan("实体类所在的包")@EnableJpaRepositories("dao层所在包名"),如下图:

@EnableJpaRepositories("com.zhu.dao")@EntityScan("com.zhu.entity")@SpringBootApplicationpublic class App{   public static void main(String[] args){       SpringApplication.run(App.class,args);   }}

完成这两步就可以使用jpa了。

6、整合mybatis:

添加依赖:

org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2

加注解:

启动类上加@MapperScan("dao层所在包名"),若需要事务支持,加上@EnableTransactionManagement,如下:

@EnableTransactionManagement@MapperScan("com.zhu.dao")@SpringBootApplicationpublic class App{   public static void main(String[] args){       SpringApplication.run(App.class,args);   }}

若mybatis基于注解形式,这样就行了,可以直接使用了,若mybatis基于xml形式,那就要在application.properties中配置如下内容:

#扫描dao层接口对应的xml文件mybatis.mapper-locations=classpath:mapper/*.xml#扫描mybatis的配置文件mybatis.config-location=classpath:mybatis-config.xml#起别名(可选),写了这个在resultType中就不用写实体类包名,直接写类名即可mybatis.type-aliases-package=com.zhu.entity

7、整合多数据源:

整合多数据源一般才用分包管理的办法,比如test1包使用数据源1,test2包使用数据源2。具体做法如下:

首先来看项目的目录结构:

img_aac6416528977e6178aa5fe6d0be8696.png
image

配置:

####整合多数据源###########数据源1:springboot1########spring.datasource.springboot1.driverClassName = com.mysql.jdbc.Driverspring.datasource.springboot1.url = jdbc:mysql:///springboot1spring.datasource.springboot1.username = #spring.datasource.springboot1.password = #######数据源2:springboot2########spring.datasource.springboot2.driverClassName = com.mysql.jdbc.Driverspring.datasource.springboot2.url = jdbc:mysql:///springboot2spring.datasource.springboot2.username = #spring.datasource.springboot2.password = #

数据源1是连接的springboot1数据库,数据源2是连接springboot2数据库。以spring.datasource.springboot1.spring.datasource.springboot2.来区分数据源1和数据2。但是这属于自定义的标签,springboot不会自动加载这两个

数据源,因此要创建两个配置类去加载这两个数据源:

加载数据源:

/** * 配置数据源1(springboot1)的类 * @author zhu * */@Configuration//表示只要是在test01包下的,都访问springboot1数据源@MapperScan(basePackages = "com.zhu.test01",sqlSessionFactoryRef = "springboot1SqlSessionFactory")public class DataSource1Config {        //创建datasource    @Bean(name = "springboot1DataSource")    @ConfigurationProperties(prefix = "spring.datasource.springboot1")    @Primary    public DataSource testDataSource() {        return DataSourceBuilder.create().build();    }        //创建SqlSessionFactory并注入datasource    @Bean(name = "springboot1SqlSessionFactory")    @Primary    public SqlSessionFactory testSqlSessionFactory(@Qualifier("springboot1DataSource") DataSource dataSource)            throws Exception{        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        return bean.getObject();    }        //创建事物管理并注入dataSource    @Bean(name = "springboot1TransactionManager")    @Primary    public DataSourceTransactionManager testTransactionManager(@Qualifier("springboot1DataSource") DataSource dataSource) {        return new DataSourceTransactionManager(dataSource);    }            //创建事物管理并注入sqlSessionFactory    @Bean(name = "springboot1SqlSessionTemplate")    @Primary    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("springboot1SqlSessionFactory")             SqlSessionFactory sqlSessionFactory) throws Exception {        return new SqlSessionTemplate(sqlSessionFactory);            }}
/** * 配置数据源2(springboot2)的类 * @author zhu * */@Configuration//表示只要是在test02包下的,都访问springboot2数据源@MapperScan(basePackages = "com.zhu.test02",sqlSessionFactoryRef = "springboot2SqlSessionFactory")public class DataSource2Config {        //创建datasource    @Bean(name = "springboot2DataSource")    @ConfigurationProperties(prefix = "spring.datasource.springboot2")    public DataSource testDataSource() {        return DataSourceBuilder.create().build();    }        //创建SqlSessionFactory并注入datasource    @Bean(name = "springboot2SqlSessionFactory")    public SqlSessionFactory testSqlSessionFactory(@Qualifier("springboot2DataSource") DataSource dataSource)            throws Exception{        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        return bean.getObject();    }        //创建事物管理并注入dataSource    @Bean(name = "springboot2TransactionManager")    public DataSourceTransactionManager testTransactionManager(@Qualifier("springboot2DataSource") DataSource dataSource) {        return new DataSourceTransactionManager(dataSource);    }            //创建事物管理并注入sqlSessionFactory    @Bean(name = "springboot2SqlSessionTemplate")    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("springboot2SqlSessionFactory")             SqlSessionFactory sqlSessionFactory) throws Exception {        return new SqlSessionTemplate(sqlSessionFactory);            }}

这样就完成了这两个数据源的加载,由于有@MapperScan指定包,prefix =... 指定加载哪个数据源,所以就能实现test01包下的就使用springboot1这个数据库,test02包下的就使用springtboot2数据库。至此就完成了多数据源的整合。注意其中一个数据源的加载时要加上@Primary注解,否则会报错。

总结:

以上就是springboot常用的一些功能,通过整合上面那些技术肯定已经感受到了它的便捷,听说spring boot是以后的趋势,趁早掌握!

以上内容属于个人笔记整理,如有错误,欢迎批评指正!

转载地址:http://nugzl.baihongyu.com/

你可能感兴趣的文章
如何配置Hyper-V的虚拟机通过主机网络上网 (NAT)
查看>>
单例模式
查看>>
287. Find the Duplicate Number
查看>>
将Android library开源到jcenter
查看>>
java线程池
查看>>
在Eclipse中使用XDebug调试代码 | Using XDebug debug code in eclipse
查看>>
[译] box-shadow 属性
查看>>
使用vue.js开发时的一些坑
查看>>
PHP 打印函数之 print print_r
查看>>
linux+xampp搭建WordPress个人网站过程详解
查看>>
深度解析大快DKadoop大数据运维管理平台功能
查看>>
基于Spark的机器学习实践 (七) - 回归算法
查看>>
企业级 SpringBoot 教程 (一)构建第一个SpringBoot工程
查看>>
阿里云有奖调查结果公布,赠送10个阿里巴巴logo胸针
查看>>
Golang学习笔记之WEB框架(gin)基本使用
查看>>
SAP人工智能服务Recast.AI的一个简单例子
查看>>
云栖科技评论90期:有两种“前沿科技”
查看>>
From 192.168.25.133 icmp_seq=238 Destination Host Unreachable 虚拟机ping主机不通
查看>>
上交所回应“科创板受理企业科技含量不高”:会在审核问询环节对企业进行多轮问询...
查看>>
教你如何用python操作数据库mysql ! !
查看>>