springboot快速入门-阿里云开发者社区

开发者社区> 贪挽懒月> 正文

springboot快速入门

简介: 前言: 正所谓,天下武功,唯快不破,在当今生活节奏越来越快的时代,我们也要讲求效率,也要追求一个快字(不过有些方面还是不能快的,不要当快男哦)。springboot就是能简化配置、敏捷开发的东西。
+关注继续查看

前言:

正所谓,天下武功,唯快不破,在当今生活节奏越来越快的时代,我们也要讲求效率,也要追求一个字(不过有些方面还是不能快的,不要当快男哦)。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。具体做法如下:

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

img_aac6416528977e6178aa5fe6d0be8696.png
image

配置:

####整合多数据源#####
######数据源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是以后的趋势,趁早掌握!

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10089 0
Spring Boot 快速入门
Spring Boot快速入门
3125 0
SpringBoot从入门到精通(二十)快速构建Restful Web API 服务
随着互联网化等逐渐深入,应用系统也变得越来越复杂,系统架构正在朝着微服务化,中台化的方向发展。这就需要各个系统、各个厂家之间的数据频繁交互。所以,使用 Restful 风格构建的应用接口适用于移动互联网厂商的业务场景,正在被越来越多的企业推荐使用。那么什么是 RESTful 呢?
249 0
Spring Boot 2.x基础教程:快速入门
简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应用! Spring Boot让我们的Spring应用变的更轻量化。
1560 0
Spring快速入门
Spring快速入门
60 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13892 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11893 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
+关注
贪挽懒月
java学习者
32
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载