Springboot的开始

Springboot

如何区分轻量级和重量级?

  在项目中,轻量级的框架会对自己项目中的代码有很少的侵入,重量级则会与代码有很深入的交叉关联。

  例如hibernate(重量级)和mybatis(重量级)

1、什么是springboot?

  springboot是spring生态圈的一个轻量级框架,换句话说springboot就是spring,是spring的衍生版本,

如果是spring框架,项目搭建完毕无法实现任何的代码,也就是说spring无法帮助开发人员连接数据,对数据库

增删改查,也没有办法把框架集成进来,需要开发人员手动编写xml配置文件,自己进行整合。因此springboot就是

要干掉xml文件,使用Java代码来编写配置(通过Java类来代替xml)。

2、为什么要用springboot来代替spring?

  傻瓜式开发,减少了大量配置,降低了开发人员的标准,低层次开发人员也可以进行编写业务逻辑,不

再需要了解内部运行原理以及框架的集成和整合。


正式使用springboot:

1、新建springboot项目:并在xml文件中引入:

 1 <parent>
 2         <groupId>org.springframework.boot</groupId>
 3         <artifactId>spring-boot-starter-parent</artifactId>
 4         <version>1.5.22.RELEASE</version>
 5     </parent>
 6 
 7     <dependencies>
 8     <!--
 9         在springboot中会定义很多个starter,每一个starter都有自己不同的作用
10         web-start:引入项目所运行的基础环境,包含了Tomcat
11             tomcat:最终springboot会自动把tomcat集成进项目中,不再需要使用外部tomcat进行启动
12             各种注解
13                 @Controller
14                 @Service
15                 @RequestMapping
16                 @ResponseBody
17     -->
18     <dependency>
19         <groupId>org.springframework.boot</groupId>
20         <artifactId>spring-boot-starter-web</artifactId>
21     </dependency>
22     </dependencies>

 

在这个配置文件中的parent标签和spring-boot-starter-web包是由官网提供的,前者是让此项目变成parent项目的子工程,

后者是引入项目运行所需要的环境(Tomcat);在引入前者的时候,可能会报异常,如果出现异常,则是项目此时的

maven路径为默认的路径,更改为自己的就行!

 

引入parent标签可以形成父子关系,使用dependency也可以形成父子关系,

他们的区别就是:通过<parent>引用的项目A,可以使用A项目中<dependency>中依赖的StringUtils的方法,

但是不能调用A项目中自己定义的类和方法,C项目中通过<dependency>依赖的A,两者却都可以调用。

于是我们经常在使用父子工程的时候:先建一个大项目,引入springbootjar包,

  新建N个小项目,利用parent标签让它们都作为大项目的子工程;

  小项目之间如果存在依赖关系,则使用dependency将项目打成jar包放入另一个项目。

从spring-boot-starter-web追溯下去:

springboot的运行原理:
            作用是实现了自动的配置
            @SpringbootApplication是一个组合注解
                @SpringBootConfiguration:springboot所必须要的基础配置(application.xml)
                @EnableAutoConfiguration:自动加载配置
            @EnableAutoConfiguration任然是一个组合注解
                @AutoConfigurationPackage:通过扫描包的形式自动加载(eg:mybatis的mapper扫描器)
                @Import:导入(在application.xml配置文件中<import />)
                    EnableAutoConfigurationImportSelector:自动加载配置的选择器(根据条件进行自动加载配置)
                    继承了AutoConfigurationImportSelector
                    AutoConfigurationImportSelector类中有一个方法
                        getCandidateConfigurations():根据某个特定的条件获取配置信息
                        loadFactoryNames():根据name的属性值来获取加载器信息
                        是根据了META-INF/spring.factories文件进行加载配置
                        根据factories文件映射到了配置类中
                            MybatisAutoConfiguration.java是经过xml配置文件转换来的,和xml配置文件一样的作用,包含有:
                            DataSource
                            SqlSessionFactory
                            sqlSessionTemplate

 

在Java下新建一个包,在包下新建一个类:ApplicationRun,这个类是整个项目的入口类:

 1 package com.aaa.liu.springboot;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * @Author 刘其佳
 8  * 2019/8/16 -- 8:24
 9  * @Version 1.0
10  *
11  * 1、注意:ApplicationRun类必须放在所有业务的上一层
12  * 2、这是springboot的入口类
13  * 也就是通过这个类启动整个项目
14  * @SpringbootApplication
15  * 自动记载springboot所需要的配置,并且把ApplicationRun类表示为整个项目的入口类
16  * 3、最终Spring博偶有是根据SpringApplication.run()来进行运行的
17  *  需要两个参数:Application.class:
18  *                  让springboot整个框架知道ApplicationRun类就是整个项目入口类
19  *              args:
20  *                  main中的形参
21  */
22 
23 @SpringBootApplication
24 public class ApplicationRun {
25 
26     public static void main(String[] args) {
27         SpringApplication.run(ApplicationRun.class,args);
28     }
29 }

 

 

建一个controller包,并新建controller类

在其中写上一个方法:

 1 package com.aaa.liu.springboot.controller;
 2 
 3 import org.springframework.web.bind.annotation.RequestMapping;
 4 import org.springframework.web.bind.annotation.RestController;
 5 
 6 /**
 7  * @Author 刘其佳
 8  * 2019/8/16 -- 8:57
 9  * @Version 1.0
10  *
11  * @Controller
12  *      直接返回页面,不能处理Ajax请求,如果需要ajax请求需要添加@ResponseController注释
13  * @RestController
14  *      把整个controller相当于都添加了@ResponseController注释,不再需要在每一个方法上进行添加
15  */
16 @RestController
17 public class Controller {
18 
19     @RequestMapping("/test")
20         public String test(){
21             return "测试springboot是否启动";
22         }
23 }

 

这里要注意:使用的是RestController,而不是controller,具体看区别;

 

整合mybatis:

1 <!--mybatis-->
2         <!--在springboot中没有整合mybatis,以下的jar包是mybatis公司自己为了整合
3             springboot而提供的,我们在引入jar包时,需要加上版本号,即从maven中央仓库下载-->
4         <dependency>
5             <groupId>org.mybatis.spring.boot</groupId>
6             <artifactId>mybatis-spring-boot-starter</artifactId>
7             <version>1.3.0</version>
8         </dependency>

 在添加mybatis依赖后,再次启动会抛异常,原因是mybatis框架被集成进项目中, 但是我们没有配置相关数据源信息。

 解决:配置数据库:

  按照springboot所规定的形式进行配置数据库,在官方文档中说明,可以使用文件进行配置数据源信息(springboot的主配置文件,也是以后操作最多的文件),

有两种类型可以选择:properties类型文件和yml类型文件。

注意:

  命名有规范:文件名必须要使用application,否则springboot无法识别;如application.properties     application.yml

  存放位置有规定:官方推荐把配置文件放在resources目录(classpath)下的config文件夹下,

          如果在config文件,springboot没有检测到会从resources目录下找;

          resources/config                resources

eg:

 1 server:
 2   port: 8081 # 配置Tomcat,注意要在属性前加上一个空格
 3   context-path: /test #配置Tomcat的根路径(默认是/ 4 
 5   # 配置数据源
 6 spring:
 7   datasource:
 8     driver-class-name: com.mysql.jdbc.Driver
 9     url: jdbc:mysql://localhost:3306/mybatis
10     data-username: root
11     password: 123456

 

 


banner

spring项目启动的时候,会自动加载spring所提供的banner;

替换banner:

  需要在resources目录中创建文件:banner.txt    

  在文件中:
/**
*_______________#########_______________________
*______________############_____________________
*______________#############____________________
*_____________##__###########___________________
*____________###__######_#####__________________
*____________###_#######___####_________________
*___________###__##########_####________________
*__________####__###########_####_______________
*________#####___###########__#####_____________
*_______######___###_########___#####___________
*_______#####___###___########___######_________
*______######___###__###########___######_______
*_____######___####_##############__######______
*____#######__#####################_#######_____
*____#######__##############################____
*___#######__######_#################_#######___
*___#######__######_######_#########___######___
*___#######____##__######___######_____######___
*___#######________######____#####_____#####____
*____######________#####_____#####_____####_____
*_____#####________####______#####_____###______
*______#####______;###________###______#________
*________##_______####________####______________
*/

 运行处的结果就可以将spring的banner改成自己的这个人物;

如果想要关闭banner的显示:

 1 package com.aaa.liu.springboot;
 2 
 3 import org.springframework.boot.Banner;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 
 7 /**
 8  * @Author 刘其佳
 9  * 2019/8/16 -- 8:24
10  * @Version 1.0
11  *
12  * 1、注意:ApplicationRun类必须放在所有业务的上一层
13  * 2、这是springboot的入口类
14  * 也就是通过这个类启动整个项目
15  * @SpringbootApplication
16  * 自动记载springboot所需要的配置,并且把ApplicationRun类表示为整个项目的入口类
17  * 3、最终Spring博偶有是根据SpringApplication.run()来进行运行的
18  *  需要两个参数:Application.class:
19  *                  让springboot整个框架知道ApplicationRun类就是整个项目入口类
20  *              args:
21  *                  main中的形参
22  */
23 
24 @SpringBootApplication
25 public class ApplicationRun {
26 
27     public static void main(String[] args) {
28 //        SpringApplication.run(ApplicationRun.class,args);
29 
30         //关闭banner的话:
31        SpringApplication springApplication=new SpringApplication(ApplicationRun.class);
32        springApplication.setBannerMode(Banner.Mode.OFF);
33        springApplication.run(args);
34     }
35 }

 

转载于:https://www.cnblogs.com/liuqijia/p/11361050.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值