了解springboot的核心内容

springboot 是一个服务于spring应用的框架。 它可以快速的启动 一个Spring 应用,只需要“run”就能创建一个独立的、生产级别的Spring应用。
本文主要是了解springboot自动配置实现和一些拓展应用。在此之前,必须理解一些 Spring 框架的基础知识。

通过Hello World来认识spring boot

  1. 按照原来的实现。 如使用spring MVC 框架,实现json 数据的输出,需要经过大量的配置,尤其是编写XML文件,可以说是相当的繁琐:
  • 通过IDEA新建Spring MVC项目
  • 设置运行、调试相关配置
  • 导入Spring MVC 相关类库
  • 添加 Controller
  • 修改 web.xml
  • 配置 component-scan,ViewResolver((dispatcher-servlet.xml)
  • 添加视图文件(.jsp)
  • 通过 Model 向 View 传值
  1. Spring-Boot的实现
    在Pom文件中导入starter依赖,不需要我们任何配置(它具有嵌入式web服务器,自动化配置Spring功能),直接编写Controller类即可,最后通过main函数启动。简而言之,它消除了设置以往应用程序所需的复杂例行配置,尽可能最快的开发应用。
    在这里插入图片描述
  2. springboot的特点:
    Spring Boot是伴随着Spring 4.0而生的,因而继承了Spring优秀的基因,包括:
  • 开箱即用。提供了非常多以spring-boot-starter-开头的开箱即用的工具包,但通过自己设置参数,即可快速摆脱这种方式。
  • 没有代码生成,无需 繁琐的XML 配置
  • start自动依赖与版本控制,省去了版本冲突带来的许多头疼问题
  • Springboot应用的热部署
  • 提供了一些大型项目中常见的非功能性特性,如内嵌Servlet容器、安全、指标,健康检测、外部化配置等

SpringBootApplication 的核心注解

通过上面简短的回顾,我们看到springboot非常快的“ run”就可以启动应用,它整个启动流程都封装在SpringApplication.run方法中,但本质上就是在Spring容器启动的基础上做了大量的扩展,而在此处的关键则是SpringBootApplication注解,利用条件配置来实现自动配置和启用组件扫描,查看该注解详情,如下图示内容:
在这里插入图片描述SpringBootApplication 本质上是由 3 个注解组成,分别是

Springboot 部署

一般来说,要么全部打包成一个jar,或者打包成一个war。

  1. 第一种方法(idea)
  • clean
  • package
    在这里插入图片描述
  1. 第二种方法(命令行):
    -例如项目文件在c盘,切换盘符。 cd C:\Users\xxx\springboot
    -要先配好 maven 环境变量 ,然后mvn install,出现 BUILD SUCCESS 证明打包成功,发现 自动生成了 target 目录, jar 包就在目录里边;
    -接着输入命令: java -jar target/springboot-0.0.1-SNAPSHOT.jar
    就启动这个jar了,通过这种方式,把此jar上传到服务器并运行,就可达到部署的效果。
    在这里插入图片描述

Springboot 配置切换和 yml

  1. 在springboot里还是要用到配置文件的。 除了使用.properties外,springboot还支持 yml格式。yml格式的可读性和…properties比起来差不多,只是更简洁,但是有时候还没有不如properties 看起来那么规整。
    如图所示,左边是application.properties的写法,右边是application.yml的写法,他们达到的效果是相同的。
  • 在application.yml 文件书写注意:
  1. 不同“等级” 用冒号隔开
  2. 次等级的前面是空格,不能使用制表符(tab)
  3. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着
    在这里插入图片描述
  4. 有时候在本地测试是使用8080端口,可是上线使用的又是80端口。 此时就可以通过多配置文件实现多配置支持与灵活切换。 通常有3个配置文件:
  • 核心配置文件:application.properties
  • 开发环境用的配置文件:application-dev.properties
  • 生产环境用的配置文件:application-pro.properties
    这样就可以通过application.properties里的spring.profiles.active 灵活地来切换使用哪个环境了,不仅可以通过修改application.properties文件进行切换,还可以在部署环境下,指定不同的参数来确保生产环境总是使用的希望的那套配置。

Springboot 持久层支持

springboot框架集成许多优秀的底层支持,这里就简单介绍一下JPA和mybatis 情况下所必要的配置,不介绍更详细的使用步骤了。

  1. JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库。真正干活的可能是Hibernate,TopLink等等实现了JPA规范的不同厂商,默认是Hibernate。
  • 配置文件application.properties,添加jpa
    在这里插入图片描述
  • 在pom.xml中添加jpa依赖
    在这里插入图片描述
  • 创建实体类
    @Entity 注解表示这是个实体类Category
    @Table(name = “category_”) 表示这个类对应的表名是 category_ ,注意有下划线哦
    @Id 表明主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) 表明自增长方式
    @Column(name = “id”) 表明对应的数据库字段名
  • 创建dao接口
    继承JpaRepository,并且提供泛型<Category,Integer> 表示这个是针对Category类的DAO,Integer表示主键是Integer类型。
    JpaRepository 这个父接口,就提供了CRUD, 分页等等一系列的查询,直接拿来用。
  • 然后创建CategoryController 类。接受listCategory映射, 然后获取所有的分类数据,传递给前端。
  1. mybatis注解方式
  • 添加配置文件application.properties,添加数据库信息。
    在这里插入图片描述
  • 在pom.xml中添加mybatis依赖
    在这里插入图片描述
  • 同样创建实体类Category。
  • 增加一个包.mapper,创建接口CategoryMapper。
    使用注解@Mapper 表示这是一个Mybatis Mapper接口。
    使用@Select注解表示调用findAll方法会去执行对应的sql语句。
  • 然后创建Controller 类,开始开发。

Springboot CRUD和分页

这里就介绍一下Mybatis CRUD和分页,还有Springboot JPA 的方式就不详细展开。
使用Mybatis 里讲解的PageHelper插件。
在这里插入图片描述

  • 注解@Configuration 表示PageHelperConfig 这个类是用来做配置的。
  • 注解@Bean 表示启动PageHelper这个拦截器。
  • 新增加一个包 然后添加一个类PageHelperConfig ,其中进行PageHelper相关配置。
  • offsetAsPageNum:设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 p.setProperty("offsetAsPageNum", "true");
  • rowBoundsWithCount:设置为true时,使用RowBounds分页会进行count查询.
    p.setProperty("rowBoundsWithCount", "true");
  • reasonable:启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页。
    p.setProperty("reasonable", "true");
  • 修改CategoryMapper,增加CRUD方法的支持。 其实就是调用不同的SQL语句。
  • 修改查询映射,这里有个例子
@RequestMapping("/listCategory")
public String listCategory(Model m,@RequestParam(value = "start", defaultValue = "0") int start,@RequestParam(value = "size", defaultValue = "5") int size) throws Exception {
    PageHelper.startPage(start,size,"id desc");
    List<Category> cs=categoryMapper.findAll();
    PageInfo<Category> page = new PageInfo<>(cs);
    m.addAttribute("page", page);         
    return "listCategory";
}
  1. 在参数里接受当前是第几页 start ,以及每页显示多少条数据 size。 默认值分别是0和5。
    @RequestParam(value = “start”, defaultValue = “0”) int start,@RequestParam(value = “size”, defaultValue = “5”
  2. 根据start,size进行分页,并且设置id 倒排序
    PageHelper.startPage(start,size,“id desc”);
  3. 因为PageHelper的作用,这里就会返回当前分页的集合了
    List cs=categoryMapper.findAll();
  4. 根据返回的集合,创建PageInfo对象
    PageInfo page = new PageInfo<>(cs);
  5. 把PageInfo对象扔进model,以供后续显示
    m.addAttribute(“page”, page);
  6. 跳转到页面 return “listCategory”;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值