Spring是一个轻量级的框架,但是它的配置还不够轻量化等新问题,为了解决一系列的问题可以使用SpringBoot!!
学习SpringBoot前需要会用一个java集成开发工具(Eclipse、MyEclipse、IDEA),对Spring框架有一定了解和使用经验,会使用Maven进行项目构建和依赖管理。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
来自——[百度百科](https://baike.baidu.com/item/Spring Boot/20249767?fr=aladdin)
SpringBoot并不算是一个严格意义上的新框架,它是对Spring框架的二次整合。摒弃了大量Spring框架的冗杂的配置信息,并且内置了Tomcat使得部署也更加方便。虽然二次整合也带来了bug调试变得更加复杂和依赖版本冲突等问题,但是依然不能掩盖SpringBoot的强大和便捷性!
SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
启动一个最简单的SpringBoot——HolleWorld!
开发环境:JDK1.8(SpringBoot官方推荐使用JDK1.7以上版本,最好使用JDK1.8尤其是Spring5版本)
MySQL+IDEA2019+SpringBoot+Maven(SpringBoot1.4.4版本需要Maven3.2+版本)
1.pom.xml导入项目依赖
1 | <parent> |
2.编写一个主程序
1 | //来标注一个主程序类,标识这是一个SpringBoot应用 |
@SrpingBootApplication是SpringBoot的核心注解,它是一个复合注解,来看源码:
1 | ({ElementType.TYPE}) |
除了几个JDK提供的注解,最重要的是:@SpringBootConfiguration@EnableAutoConfiguration
@ComponentScan这三个注解,可以使用这三个注解替换@SpringBootApplication,但显然一个注解更加优雅!解释一下这三个直接:
@SpringBootConfiguration:和@Configuration作用相同,标识被注解的类是一个IoC容器的配置类。
@EnableAutoConfiguration:用于将所有符合自动配置的Bean加载到当前SpringBoot创建并使用的IoC容器中。
@ComponentScan:用于自动扫描和加载符合条件的组件或Bean,并将Bean加载到IoC容器中。
3.编写Controller
SpringBoot中提供了一个@RestController注解,相当于@Controller+@ResponseBody,但是使用此注解之后视图解析器就会失效,返回的是return的内容。
1 |
|
4.直接启动main方法
一个大大的Spring的logo,日志信息里发现:2019-09-08 17:11:50.096 INFO 13320 — [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ‘’
表示tomcat在8080端口已经启动了!!在浏览器请求一下localhost:8080\HelloWorld.action和预期结果一致。
5.打包部署项目
引入一个插件
1 | <build> |
点击Maven构建插件package,生成了一个项目的jar包,直接使用java -jar jar包名的命令即可启动项目。部署的目标服务器不需要配置tomcat,因为jar包中已经嵌入了tomcat!!!
SpringBoot整合Mybatis:
1.pom.xml添加依赖
1 | <!-- 在之前的基础上加上mysql和mybatis启动器依赖 --> |
2.application.properties
1 | #数据库四大参数 |
这里可以使用YAML配置文件代替properties文件,YAML是JSON的一个超集,可以将外部配置以层次结构形式存储起来,当项目的类路径中有SnakeYAML库(spring-boot-starter中已经被包含)时,SpringApplication类将自动支持YAML作为properties的替代。细节:properties文件中是以“.”进行分割的,在yml中是用“:”进行分割的;yml的数据格式和json的格式很像,都是K-V格式,通过“:”进行赋值;yml的冒号后面一定要加一个空格,否则文件会报错。
springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,你一切都不用管了,直接拿起来使用就行了!!!mybatis.mapper-locations属性可以在启动类上加@MapperScan(“xxx.xxx.xx”)代替,或者在每个Mapper接口上加@Mapper注解替代!!!
3.编写pojo类User
1 | public class User { |
4.UserController
1 |
|
5.UserService&UserServiceImpl
1 |
|
这里遇到一个很奇怪的问题,这里的@Autowired注解总是说不能自动注入,但是不影响编译和运行。。
既然不影响。。。可以直接将这个错误的等级降到警告:
6.UserDao
1 | //注意@Mapper注解是在Mybatis3.4.0版本才引入的 |
可以使用@select()、@delete()、@update()、@insert()去写动态sql语句,如果pojo类属性和数据库表列名不一致可以使用@Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应。
如果用是mapper.xml编写sql语句的话,需要在启动类上加@MapperScan(“….dao包路径”)去掉@Mapper。
这些都准备好之后就可以直接运行了,请求的数据操作也都能正确的持久化到数据库中。。。这算是基本调通了。。。其他的东西再慢慢学习补充吧。。。