springboot快速入门

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 正所谓,天下武功,唯快不破,在当今生活节奏越来越快的时代,我们也要讲求效率,也要追求一个快字(不过有些方面还是不能快的,不要当快男哦)。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以及以一大串英文,自己写了全局异常捕获类就可以在出错时显示自己写的内容。


只需要编写一个类加上注解即可,如下:

@ControllerAdvice
public class GlobalExceptionHandler{
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Map<String,Object> resultError(){
         Map<String,Object> modelMap = new HashMap<String,Object>();
         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用得不多了,也介绍一下如何整合。


添加依赖:

<!-- 要用jdbcTemplate,除了数据库依赖,添加这一个即可 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.0.2.RELEASE</version>
</dependency>


注入使用:


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

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:


添加依赖:

<!-- 除了数据库依赖,添加这一个即可 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.0.2.RELEASE</version>
</dependency>


加注解:


在启动类上添加两个注解:@EntityScan("实体类所在的包")


@EnableJpaRepositories("dao层所在包名"),如下图:

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


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


6、整合mybatis:


添加依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>


加注解:


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

@EnableTransactionManagement,如下:

@EnableTransactionManagement
@MapperScan("com.zhu.dao")
@SpringBootApplication
public 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。具体做法如下:


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


image.png


配置:

####整合多数据源#####
######数据源1:springboot1########
spring.datasource.springboot1.driverClassName = com.mysql.jdbc.Driver
spring.datasource.springboot1.url = jdbc:mysql:///springboot1
spring.datasource.springboot1.username = #
spring.datasource.springboot1.password = #
######数据源2:springboot2########
spring.datasource.springboot2.driverClassName = com.mysql.jdbc.Driver
spring.datasource.springboot2.url = jdbc:mysql:///springboot2
spring.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是以后的趋势,趁早掌握!


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





相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 测试技术 Spring
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
1620 1
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
|
XML Java 测试技术
SpringBoot入门篇 01、Springboot入门及配置(二)
SpringBoot入门篇 01、Springboot入门及配置(二)
|
XML Java 应用服务中间件
SpringBoot 快速入门(保姆级详细教程)
SpringBoot快速入门,保姆级别超详细,解决IDEA创建SpringBoot项目一直转圈圈。
621 0
SpringBoot 快速入门(保姆级详细教程)
|
存储 Java 测试技术
Idea工具中创建 SpringBoot工程及入门详解
Idea工具中创建 SpringBoot工程及入门详解
1357 4
Idea工具中创建 SpringBoot工程及入门详解
|
Java 关系型数据库 MySQL
MyBatis-Plus 入门 【SpringBoot版】
今天来带大家入门学习MyBatis-Plus,MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
|
druid Java 关系型数据库
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
498 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
|
JSON Java 应用服务中间件
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
178 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
|
Java 应用服务中间件 Maven
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
233 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
|
开发框架 负载均衡 前端开发
SpringBoot入门篇 01、Springboot入门及配置(一)
SpringBoot入门篇 01、Springboot入门及配置(一)
|
Java 应用服务中间件 数据库连接
springboot入门demo详解(解决跨域)
微服务自问世以来就一直很火。天天耳听Springboot,Springcloud,docker,这些名词,以前没学Springboot的时候刚学ssm的时候,,说实话头都炸了。单独一个个学习Spring,Springmvc,mybatis还能将就配置,记得当初把三个整合的时候可是费了好大的功夫,然后又将ssm转成idea的maven项目又转了一大圈,找了好久,n个bug才把ssm搭成功。
229 0
springboot入门demo详解(解决跨域)
下一篇
无影云桌面