首页 > 编程知识 正文

springboot项目源码,springboot源码解析

时间:2023-05-06 20:54:12 阅读:129250 作者:2340

SpringBoot2.0笔记(一) SpringBoot基本操作——环境构建和项目创建(有demo ) ) ) ) ) ) ) ) ) )。

(二)使用SpringBoot基本操作——idea创建、发布和测试war包

(三) SpringBoot基本操作——SpringBoot集成springdatajpa (有demo ) ) )。

(四) SpringBoot基本操作——SpringBoot使用RedisTemplate集成redis (有demo )

(五) SpringBoot基本操作——SpringBoot使用Jedis集成重做(有demo )

(六) SpringBoot基本操作——SpringBoot使用Junit4单元测试(有demo )

(七) SpringBoot基本操作——SpringBoot集成Shiro权限管理(完整的demo接口) ) ) )。

在本文中,您将使用idea工具构建spring boot 2.0 springmvcthymeleafspringdatajpamysqlredis项目

GitHub地址: https://github.com/jw wam/springbootdemo.git

这个demo可以直接下载运行。 以下是创建项目的具体过程步骤说明和问题解决方法。

另一方面,使用生成SpringBoot项目的idea创建SpringBoot项目,选择SpringInitializr,选择jdk版本,然后单击下一步

2 .填写项目包名称和java版本

3 .选中所需的项目组件,Springboot版本使用2.0

Lombok可以简化代码量,并提供注释方式来代替重复代码。 不是必须的,有时不看情况也很有用。 我不推荐初学者

4 .要创建web项目,请选中web

5 .模板语言选中Thymeleaf,这是不言而喻的。 springboot官方推荐,确实好用。 当然是指3.0版,旧版本的性能有短板

6 .数据库持久化推荐JPA方式,MySQL根据情况选择

7.Nosql我在这里使用Redis,看看你需要什么,取消选中,稍后在需要的时候部署

8.MQ可以根据自己的情况选择。 在我这里不需要。 最后需要向I/O发送邮件的服务。 不用的话也不用检查。 以后可以部署

9 .下一步,填写项目文件名

10 .完成后进入项目,等待很长时间后项目完成

二、启动SpringBoot项目1 .项目加载完成后,打开启动器DemoApplication右键run直接启动项目,或从右上角直接启动DemoApplication

2 .如果没有意外,直接启动也不会报告错误。 没什么好说的。 列举可能出现的问题。 这些问题基本都是由于前面勾选项目组件(即jpa,mysql等)时引入了需要启动注入的一些依赖或数据源缺失引起的和Springboot版本也有很大的关系,以下错误不一定会发生:

(1)启动报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedd

问题原因:新项目没有进行相关的数据源配置,这是因为启动springboot时找不到配置

解决办法(选一即可):

启动类DemoApplication并添加注释@ springbootapplication (exclude=datasourceautoconfiguration.class ) )。

禁止自动加载数据源配置

手动添加数据源,并将以下配置添加到application.properties中:

#数据源spring.data source.URL=JDBC : MySQL ://localhost 33603306/demo _ test? use unicode=truezerodatetimebehavior=converttonullautoreconnect=truespring.data source.username=root spring.data sourecoure

问题原因: Springboot自动加载持久性bean,即自动加载jpa的bean

(2)启动报错:At least one JPA metamodel must be present!

在启动类DemoApplication上添加以下注释

@Ena

bleAutoConfiguration(exclude={ JpaRepositoriesAutoConfiguration.class //禁止springboot自动加载持久化bean})

② pom加入或更改jpa启动包,按照以下格式

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> </exclusion> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </exclusion> </exclusions></dependency><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version></dependency>

pom重新导入就好了,启动项目也不再报错。

三、Hello World页面显示及Json数据回传

1.增加一个测试控制层和页面,添加测试类FirstController.java

package com.springboot.demo.controller; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; /** * @ClassName: FirstController * @Auther: zhangyingqi * @Date: 2018/8/23 17:53 * @Description: 测试页面跳转 */@Controller@RequestMapping(value="/first")public class FirstController { @RequestMapping(value="/view") public String view(HttpServletRequest request){ return "/demoPage/firstPage"; }}

2.添加测试页面 firstPage.html

<!DOCTYPE html><html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"><head><title>Hello</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <div>Hello World!</div></body></html>

3.目录结构

4.到这里启动后就能访问到测试页面了,后面我需要加入统一日志和统一返回格式处理,都是在真实开发环境下必须的,所以我也列出来

在com.springboot.demo.base.controller包下新建BaseController.java,用来提供日志接口以及返回model的固定参数格式

package com.springboot.demo.base.controller; import com.springboot.demo.base.utils.StateParameter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.ui.ModelMap; public abstract class BaseController{ protected final String success = StateParameter.SUCCESS; protected final String fail = StateParameter.FAULT; protected final Logger logger = LoggerFactory.getLogger(this.getClass()); public ModelMap getModelMap(String status,Object data,String msg){ ModelMap modelMap=new ModelMap(); modelMap.put("status", status); modelMap.put("data", data); modelMap.put("msg", msg); return modelMap; } }

在com.springboot.demo.base.utils包下新建StateParameter.java

package com.springboot.demo.base.utils; public class StateParameter { public final static String SUCCESS="1"; public final static String FAULT="0"; public final static String DATA="data"; public final static String STATE="state"; }

目录结构如图:

5.添加简单日志记录,修改控制层代码,加入logger日志记录,添加back方法返回json数据,返回getModelMap传入状态值一般页面js接收用来判断操作成功或失败,data参数下方为null,一般传入想返回的数据内容如对象等,最后一个参数msg为提示信息。

@Controller@RequestMapping(value="/first")public class FirstController extends BaseController{ @RequestMapping(value="/view") public String view(HttpServletRequest request){ logger.info("进入测试页面"); return "/demoPage/firstPage"; } @RequestMapping(value="/back", method = RequestMethod.POST) @ResponseBody public ModelMap back(HttpServletRequest request){ logger.info("进入json测试页面"); return getModelMap(StateParameter.SUCCESS, null, "请求成功"); } }

打开浏览器输入:localhost:8080/first/view 测试页面正常跳转

打开RESTClient浏览器插件测试json数据返回正常(如没有插件可更改请求为get接收,直接在浏览器请求back路径即可返回json数据),输入 http://localhost:8080/first/back 返回我们设定的 msg:请求成功

 

查看控制台输出日志,关于Springboot项目结合AOP和logback日志持久化入库可以查看我的这篇文章。

全文完,2018/8/23

写博文不易,转载请注明出处。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。