SpringBoot--springboot简述及快速入门
spring Boot是spring提供的一个子项目,用于快速构建spring应用程序
传统方式:
在众多子项目中,spring framework项目为核心子项目,提供了核心的功能,其他的子项目都需要依赖于spring framework,在我们实际开发中,我们可以根据不同的业务需求来选择不同的子项目,通过spring framework子项目把他们整合起来,从而构建一个spring应用程序。
随着我们的业务需求越来越复杂,功能越来越强大,构建spring程序就会越来越麻烦,因此spring官方给我们提供了spring boot专门应用于spring项目的构建,
传统方式构建spring应用程序问题
-
导入依赖繁琐
例如,我们在编写spring程序时,需要导入相关依赖,且是手动导入,而且这些依赖的jar包可能会造成冲突,jar包冲突的问题也需要去手动解决。非常麻烦。
-
项目配置繁琐
还需要些很多的配置文件,例如web.xml
,springMVC.xml
,applicationContext.xml
等等
而applicationContext.xml
是spring项目中的核心配置文件,需要在其中声明配置大量的Bean对象,比如数据库连接池(DataSource
),SQLSessionFactory
,transactionManager
,mapperScannerConfigue
(扫描映射文件配置)等等不止,这还只是整合mybatis需要的声明配置,随着项目功能越来越强大,需要配置的bean对象也越来越多,越来越繁琐。
springBoot特性
-
起步依赖(解决导入依赖繁琐的问题)
本质上就是一个Maven坐标,整合了完成一个功能需要的所有坐标。
例如,我们要开发一个web应用,需要引入大量依赖,例如spring-core,spring-web,spring-context,spring-aop等等,在传统方式构建时,需要手动导入,非常繁琐。
而springboot提供了一个起步依赖,在spring-boot-starter-web
这个坐标,它将完成web开发需要的所有的坐标全部整合起来放在spring-boot-starter-web
这个坐标里,接下来我们在实际开发中,在需要使用web开发时就不需要导入以前如此多的依赖了,只需要引入springboot提供的起步依赖的坐标即可。这里主要借助了Maven传递依赖的特性。
-
自动配置(解决配置繁琐的问题)
遵循约定大于配置的原则,在boot程序启动后,一些bean对象会自动注入到IOC容器中,不需要手动声明,简化开发。
在传统项目创建中,spring整合MyBatis除了要导入大量依赖,还要在声明配置Bean对象(SQLSessionFactoryBean、MapperScannerCofigurer)。
而在springboot项目中,只需要引入MyBatis的起步依赖,在其内部已经自动声明需要的Bean对象,不需要在配置文件中手动的声明了。
起步依赖+自动配置 = 快速构建spring应用程序
-
其它特性
-
内嵌的Tomcat、Jetty(无需部署WAR文件)
以前开发的web应用程序需要打成war包,再去部署到我们安转的Tomcat,Jetty这样的服务器软件上才能被浏览器访问。而springboot提供了内嵌的Tomcat,即使用springboot构建的应用程序,启动时内部的Tomcat会跟着启动,并且将当前项目里的资源自动部署好。
-
外部化配置
传统项目中的配置文件都在工程里,当前工程开发完毕后,打成jar包部署,但是如果一些配置发生了变化,需要在当前工程的配置文件里修改,修改完毕后重新打包并部署。比较繁琐
springboot提供了外部化的配置,将所有的配置文件都放在了外部的MATA-INF/spring.factories中,如果项目部署完毕之后,想要修改配置,只需要去修改项目外边的配置文件即可,修改完毕后不需要重新编译打包部署,可以直接重启即可。
-
不需要XML配置(使用properties/yml配置文件)
传统项目中的XML配置文件写起来十分繁琐复杂,
在springboot项目中采用properties配置文件(键值对形式)或者yaml/yml配置文件()来编写配置文件。十分简便。
-
我们可以尝试创建一个springboot项目
springBoot入门
需求:使用springboot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串“hello world”
实现过程:
-
创建Maven工程
-
导入spring-boot-starter-web起步依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
-
编写Controller
package com.lyc.firstdemo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world";}}
-
提供启动类
测试:
测试成功,我们发现直接创建springboot项目的话,大多数需要的操作系统中已经自己完成了,,我们只需要创建Controller来控制网页,以及导入web的起步依赖。其他的操作已经在底层自动完成了。由此看来,springboot项目确实十分便捷。
注意事项:在springboot项目中打包方式不需要使用war包,因为springboot项目中内嵌了Tomcat,打成jar包就行。
我们已经创建了一个springboot项目并成功测试,并发现springboot项目与普通的Maven项目好像区别不是很多,让我们来尝试利用Maven项目来达到springboot项目中的效果。
手动创建springboot项目
-
创建Maven工程
-
引入父依赖以及spring-boot-starter-web起步依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.5</version></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
-
提供启动类
package com.lyc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication //注解表示为springboot项目的启动类public class SpringBootCreateManualApplication {public static void main(String[] args) {SpringApplication.run(SpringBootCreateManualApplication.class, args);//调用run方法启动项目}}
-
提供controller类
package com.lyc.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world----------------niuhbi-----------";}}
-
在浏览器中测试:
测试成功。
希望让大家对springboot项目有个大概的了解。谢谢大家!