分享

springboot快速入门

 贪挽懒月 2022-06-20 发布于广东

前言:

正所谓,天下武功,唯快不破,在当今生活节奏越来越快的时代,我们也要讲求效率,也要追求一个字(不过有些方面还是不能快的,不要当快男哦)。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以及以一大串英文,自己写了全局异常捕获类就可以在出错时显示自己写的内容。 只需要编写一个类加上注解即可,如下:

  1. @ControllerAdvice

  2. public class GlobalExceptionHandler{

  3.    @ExceptionHandler(RuntimeException.class)

  4.    @ResponseBody

  5.    public Map<String,Object> resultError(){

  6.         Map<String,Object> modelMap = new HashMap<String,Object>();

  7.         modelMap.put("errCode",500);

  8.         modelMap.put("errMsg","错误!");

  9.         return modelMap;

  10.    }

  11. }

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

3、配置多环境: 

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

  1. test         ------------------        本地开发环境

  2. sit          ------------------        测试环境

  3. pre          ------------------        预生产环境

  4. pid          ------------------        生产环境

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

文件:

  1.    application.properties            ------------------      总配置文件

  2.    application-test.properties       ------------------      本地

  3.    application-sit.properties        ------------------      测试

  4.    application-pre.properties        ------------------      预生产

  5.    application-pid.properties        ------------------       生产

每个环境下的配置写到对应的配置文件中,然后在总配置文件application.properties中通过 spring.profiles.active=读取不同的配置文件, test时读取 application-test.properties , sit时读取 application-sit.properties 。

4、整合jdbcTemplate: 

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

添加依赖:

  1. <!-- 要用jdbcTemplate,除了数据库依赖,添加这一个即可 -->

  2. <dependency>

  3.    <groupId>org.springframework.boot</groupId>

  4.    <artifactId>spring-boot-starter-jdbc</artifactId>

  5.    <version>2.0.2.RELEASE</version>

  6. </dependency>

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

  1. public class test{

  2.   @AutoWired

  3.   private JdbcTemplate jdbcTemplate;

  4.   public void insertUser(String name,int age){

  5.        jdbcTemplate.update("insert into tb_user values(null,?,?)",name,age);

  6.   }

  7. }

5、整合jpa: 

添加依赖:

  1. <!-- 除了数据库依赖,添加这一个即可 -->

  2. <dependency>

  3.    <groupId>org.springframework.boot</groupId>

  4.    <artifactId>spring-boot-starter-data-jpa</artifactId>

  5.    <version>2.0.2.RELEASE</version>

  6. </dependency>

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

  1. @EnableJpaRepositories("com.zhu.dao")

  2. @EntityScan("com.zhu.entity")

  3. @SpringBootApplication

  4. public class App{

  5.   public static void main(String[] args){

  6.       SpringApplication.run(App.class,args);

  7.   }

  8. }

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

6、整合mybatis:

添加依赖:

  1. <dependency>

  2.    <groupId>org.mybatis.spring.boot</groupId>

  3.    <artifactId>mybatis-spring-boot-starter</artifactId>

  4.    <version>1.3.2</version>

  5. </dependency>

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

  1. @EnableTransactionManagement

  2. @MapperScan("com.zhu.dao")

  3. @SpringBootApplication

  4. public class App{

  5.   public static void main(String[] args){

  6.       SpringApplication.run(App.class,args);

  7.   }

  8. }

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

  1. #扫描dao层接口对应的xml文件

  2. mybatis.mapper-locations=classpath:mapper/*.xml

  3. #扫描mybatis的配置文件

  4. mybatis.config-location=classpath:mybatis-config.xml

  5. #起别名(可选),写了这个在resultType中就不用写实体类包名,直接写类名即可

  6. mybatis.type-aliases-package=com.zhu.entity

7、整合多数据源: 

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

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

配置:

  1. ####整合多数据源#####

  2. ######数据源1:springboot1########

  3. spring.datasource.springboot1.driverClassName = com.mysql.jdbc.Driver

  4. spring.datasource.springboot1.url = jdbc:mysql:///springboot1

  5. spring.datasource.springboot1.username = #

  6. spring.datasource.springboot1.password = #

  7. ######数据源2:springboot2########

  8. spring.datasource.springboot2.driverClassName = com.mysql.jdbc.Driver

  9. spring.datasource.springboot2.url = jdbc:mysql:///springboot2

  10. spring.datasource.springboot2.username = #

  11. spring.datasource.springboot2.password = #

数据源1是连接的springboot1数据库,数据源2是连接springboot2数据库。以 spring.datasource.springboot1.和 spring.datasource.springboot2.来区分数据源1和数据2。但是这属于自定义的标签,springboot不会自动加载这两个 数据源,因此要创建两个配置类去加载这两个数据源:

加载数据源:

  1. /**

  2. * 配置数据源1(springboot1)的类

  3. * @author zhu

  4. *

  5. */

  6. @Configuration

  7. //表示只要是在test01包下的,都访问springboot1数据源

  8. @MapperScan(basePackages = "com.zhu.test01",sqlSessionFactoryRef = "springboot1SqlSessionFactory")

  9. public class DataSource1Config {

  10.    //创建datasource

  11.    @Bean(name = "springboot1DataSource")

  12.    @ConfigurationProperties(prefix = "spring.datasource.springboot1")

  13.    @Primary

  14.    public DataSource testDataSource() {

  15.        return DataSourceBuilder.create().build();

  16.    }

  17.    //创建SqlSessionFactory并注入datasource

  18.    @Bean(name = "springboot1SqlSessionFactory")

  19.    @Primary

  20.    public SqlSessionFactory testSqlSessionFactory(@Qualifier("springboot1DataSource") DataSource dataSource)

  21.            throws Exception{

  22.        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

  23.        bean.setDataSource(dataSource);

  24.        return bean.getObject();

  25.    }

  26.    //创建事物管理并注入dataSource

  27.    @Bean(name = "springboot1TransactionManager")

  28.    @Primary

  29.    public DataSourceTransactionManager testTransactionManager(@Qualifier("springboot1DataSource") DataSource dataSource) {

  30.        return new DataSourceTransactionManager(dataSource);

  31.    }

  32.    //创建事物管理并注入sqlSessionFactory

  33.    @Bean(name = "springboot1SqlSessionTemplate")

  34.    @Primary

  35.    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("springboot1SqlSessionFactory")

  36.             SqlSessionFactory sqlSessionFactory) throws Exception {

  37.        return new SqlSessionTemplate(sqlSessionFactory);

  38.    }

  39. }

  1. /**

  2. * 配置数据源2(springboot2)的类

  3. * @author zhu

  4. *

  5. */

  6. @Configuration

  7. //表示只要是在test02包下的,都访问springboot2数据源

  8. @MapperScan(basePackages = "com.zhu.test02",sqlSessionFactoryRef = "springboot2SqlSessionFactory")

  9. public class DataSource2Config {

  10.    //创建datasource

  11.    @Bean(name = "springboot2DataSource")

  12.    @ConfigurationProperties(prefix = "spring.datasource.springboot2")

  13.    public DataSource testDataSource() {

  14.        return DataSourceBuilder.create().build();

  15.    }

  16.    //创建SqlSessionFactory并注入datasource

  17.    @Bean(name = "springboot2SqlSessionFactory")

  18.    public SqlSessionFactory testSqlSessionFactory(@Qualifier("springboot2DataSource") DataSource dataSource)

  19.            throws Exception{

  20.        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

  21.        bean.setDataSource(dataSource);

  22.        return bean.getObject();

  23.    }

  24.    //创建事物管理并注入dataSource

  25.    @Bean(name = "springboot2TransactionManager")

  26.    public DataSourceTransactionManager testTransactionManager(@Qualifier("springboot2DataSource") DataSource dataSource) {

  27.        return new DataSourceTransactionManager(dataSource);

  28.    }

  29.    //创建事物管理并注入sqlSessionFactory

  30.    @Bean(name = "springboot2SqlSessionTemplate")

  31.    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("springboot2SqlSessionFactory")

  32.             SqlSessionFactory sqlSessionFactory) throws Exception {

  33.        return new SqlSessionTemplate(sqlSessionFactory);

  34.    }

  35. }

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

总结:

以上就是springboot常用的一些功能,通过整合上面那些技术肯定已经感受到了它的便捷,更多spring boot的用法,本公众号将持续更新。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多