热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot框架的搭建学习详细流程

SpringBoot框架的搭建--学习详细流程,Go语言社区,Golang程序员人脉社

一、前期准备

1. 开发工具:IntelliJ IDEA 2. 百度搜索--IntelliJ IDEA--Ultimate版本 3. lanyu注册码:淘宝上购买JetBrain全家桶 4. 安装教程:https://www.runoob.com/w3cnote/intellij-idea-usage.html

· 安装过程中忽略的步骤和截图都是next
在这里插入图片描述在这里插入图片描述

http://idea.lanyus.com/ 替换内容:现将host复制出来 0.0.0.0 account.jetbrains.com 0.0.0.0 www.jetbrains.com

在这里插入图片描述

创建一个springboot工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述遇到问题:如果pom文件的前面不是一个大M,修改方式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果计算机中已经有了Maven,IntelliJ自带的内置的Maven插件,在当前计算机的目录下 C:UsersAdministrator.m2repository

在这里插入图片描述

spring boot官网: https://spring.io/projects/spring-boot/ https://start.spring.io/

在这里插入图片描述在这里插入图片描述

IDE连接数据库详细步骤:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

.idea目录和.mvn目录与开发工具有关,不是源码

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

修改IDE中字体的大小

在这里插入图片描述

利用鼠标的滚轮控制字体大小

在这里插入图片描述

课后作业:需要在application.properties文件中配置 #前台表单提交字符串转换为Date spring.mvc.date-format=yyyy-MM-dd HH:mm:ss #后台的Date类型转换指定格式的字符串在json当中 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8

在这里插入图片描述

Springboot的实例代码

在这里插入图片描述在这里插入图片描述

正常情况:蓝色的文件夹--java文件 | 绿色的文件夹--test测试文件 如果文件夹没有颜色,说明不是Maven工程,进行修改:

在这里插入图片描述

工程连接数据库进行访问:

在这里插入图片描述

控制台打印结果:

在这里插入图片描述

从Controller层到Service层的代码调试过程

Book.java

package com.neuedu.demo1.model; import java.util.Date; public class Book { // 包装类和基本数据类型的区别 private Integer bookNo; private String bookName; private String author; private Date date; // 快速生成构造函数和get、set方法 // 快捷键:alt+enter(单独生成单个属性,鼠标定位) // alt+insert(批量创建),shift+上下选中回车 public Integer getBookNo() { return bookNo; } public void setBookNo(Integer bookNo) { this.bookNo = bookNo; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Book(Integer bookNo, String bookName, String author, Date date) { this.bookNo = bookNo; this.bookName = bookName; this.author = author; this.date = date; } public Book() { } }

在这里插入图片描述
在这里插入图片描述

Lombok的安装

Lombok的优点:以简单的注解形式来简化java代码,提高开发人员的开发效率 1.Lombok自动生成实体类中的get/set/toString等方法 <scope>providedscope>的含义是:只在编译期起作用 2.在Pom.xml文件中添加依赖: https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.8 <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <version>1.18.8version> <scope>providedscope> dependency> 3.使IntelliJ使用默认的仓库和本地的Maven仓库合并 4.使用lombok // 1.在项目当中引入lombok依赖,作用域:provided(只在编译器,不会被打包进项目) // 2.给IDE装lombok插件

在这里插入图片描述在这里插入图片描述

Book.java

package com.neuedu.demo1.model; //import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; //import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @Data public class Book { // 包装类和基本数据类型的区别 private Integer bookNo; private String bookName; private String author; // // 方式二:日期格式转换 // // 局部配置优先于全局配置 // @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") //// @JsonFormat(timezOne= "GMT+8",pattern = "yyyy/MM/dd") private Date publishDate; // // // 快速生成构造函数和get、set方法 // // 快捷键:alt+enter(单独生成单个属性,鼠标定位) // // alt+insert(批量创建),shift+上下选中回车 // // public Book() { // } // // public Book(Integer bookNo, String bookName, String author, Date publishDate) { // // this.bookNo = bookNo; // this.bookName = bookName; // this.author = author; // this.publishDate = publishDate; // } // // public Integer getBookNo() { // // return bookNo; // } // // public void setBookNo(Integer bookNo) { // this.bookNo = bookNo; // } // // public String getBookName() { // return bookName; // } // // public void setBookName(String bookName) { // this.bookName = bookName; // } // // public String getAuthor() { // return author; // } // // public void setAuthor(String author) { // this.author = author; // } // // public Date getPublishDate() { // return publishDate; // } // // public void setPublishDate(Date publishDate) { // this.publishDate = publishDate; // } }

BookController.java

package com.neuedu.demo1.controller; import com.neuedu.demo1.model.Book; import com.neuedu.demo1.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class BookController { @Autowired private BookService bookService; // 请求路径/book/1001 @RequestMapping("/book/{id}") public Book findBook(@PathVariable("id") Integer id){ Book book = new Book(); book.getAuthor(); // 1.在项目当中引入lombok依赖,作用域:provided(只在编译器,不会被打包进项目) // 2.给IDE装lombok插件 return bookService.findBookById(id); } }

Intellij中 springboot 热部署 (两种方式)

Intellij中 springboot 热部署–方式一

在edit configuration 中修改 on update action 属性的值为:hot swap classes and update trigger File if failed

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

方式一的缺点:在类中添加新的方法时,报错 理由:java类都是编译生成字节码文件,新的方法字节码文件中不存在

Intellij中 springboot 热部署–方式二【热重启】

方式二优点:新增方法也可以进行编译运行 全局重新编译--速度较慢 ctrl+shift+A快速搜索设置项 方式二详细步骤: 通过springboot devtools配置热重启 1. 将springboot devtools依赖包引入项目依赖中,通过pom 2. 在intellij 中配置complier的build project automatically为true 3. ctrl+shift+a(快速搜索设置项)搜索 registry,设置属性 complier.automake.allow.when.app.running 为true 在eclipse中直接引入devtools即可

在eclipse中只需要添加pom依赖

<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-devtoolsartifactId> <scope>runtimescope> <optional>trueoptional> dependency>

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

将xml文件改写成Java Config类

java config 的几个注解与xml配置的对应关系 @Configuration 对应一个xml配置文件 @Bean 对应xml中的<bean>标签 @ComponentScan 对应xml 中的<context:component-scan> @Scope注解对应<bean scope="">的属性 @Import注解对应<import> @PropertyResource注解对应xml中的<context:property-placeholder>注解 @ImportResource 注解可以引入xml文件,将javaconfig 和xmlconfig结合使用,

以DataSource为例:

在这里插入图片描述
在这里插入图片描述

日志框架学习

application.yml #server: # port: 8080 # servlet: # context-path: /demo1 # 设置日志等级 logging: level: org: springframework: debug com: neuedu: debug # 生成的日志文件路径 file: d:/

package com.neuedu.demo1.controller; import org.slf4j.ILoggerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; @RestController //@Controller public class HelloController { private static Logger logger = LoggerFactory.getLogger(HelloController.class); // @ResponseBody @GetMapping("/hello") public String hello(){ logger.debug("hello Log"); // 返回的是一个逻辑ModelAndView视图名称 return "{"content":"hello Spring Boot 热部署!!"}"; } }

profile配置–dev和prod

application-dev.yml server: port: 8080 application-prod.yml server: port: 8888

application.yml # 实现在多个环境下进行切换 # 没有配置,默认是8080 # prod生产环境和开发环境Dev(名字可以改变) # 新建两个application-dev和application-prod的文件 # application是spring的固定格式 profiles: active: prod

Interceptor拦截器的使用

AuthInterceptor .java

com.neuedu.demo1.interceptor.AuthInterceptor

package com.neuedu.demo1.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; // 拦截器 public class AuthInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String username = (String) request.getSession().getAttribute("username"); if(username != null && !"".equals(username)){ return true; } response.getWriter().print("Access denied!"); return false; } }

AppConfig .java

com.neuedu.demo1.config.AppConfig

package com.neuedu.demo1.config; import com.neuedu.demo1.interceptor.AuthInterceptor; import org.springframework.boot.SpringBootConfiguration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @SpringBootConfiguration public class AppConfig implements WebMvcConfigurer { // 拦截所有的请求/**,除了/login @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/login/*"); } }

主流的前端框架

主流的前后端分离的基于Javascript 的mvvm框架: vue.js(简易) react.js(强大,学习成本高) augluar.js ext.js ember.js 分布式框架:dubbo(阿里使用的框架) 学习:Redis、JPA、GSON、thymeleaf

SpringCloud涉及到源码

工程目录

在这里插入图片描述

config/AppConfig.java

package com.neuedu.demo1.config; import com.neuedu.demo1.interceptor.AuthInterceptor; import org.springframework.boot.SpringBootConfiguration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @SpringBootConfiguration public class AppConfig implements WebMvcConfigurer { // 拦截所有的请求/**,除了/login @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/login/*"); } }

BookController.java

package com.neuedu.demo1.controller; import com.neuedu.demo1.model.Book; import com.neuedu.demo1.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class BookController { @Autowired private BookService bookService; // 请求路径/book/1001 @RequestMapping("/book/{id}") public Book findBook(@PathVariable("id") Integer id){ Book book = new Book(); book.getAuthor(); // 1.在项目当中引入lombok依赖,作用域:provided(只在编译器,不会被打包进项目) // 2.给IDE装lombok插件 return bookService.findBookById(id); } }

HelloController.java

package com.neuedu.demo1.controller; import org.slf4j.ILoggerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; @RestController //@Controller public class HelloController { private static Logger logger = LoggerFactory.getLogger(HelloController.class); // @ResponseBody @GetMapping("/hello") public String hello(){ logger.debug("hello Log"); // 返回的是一个逻辑ModelAndView视图名称 return "{"content":"hello Spring Boot 热部署!!"}"; } @GetMapping("/hi") public String hi var cpro_id = "u6885494";

推荐阅读
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 开发笔记:Android ClassNotFoundException:在路径上找不到类:Dexpathlist
    我面临以下错误,我几乎尝试了Stackoverflow的每一个解决方案。我是 ... [详细]
  • Ivebeentryingtofindtheoptionofinsertingablanklinebeforetheclosing}oftheclassan ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 我将SpringMVC升级到Spring3.2.5.我的一些剩余调用即使存在,也会返回无法识别的字段异常.这是错误.Resolvingexceptionfrom ... [详细]
author-avatar
fffas2010_734_196
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有