Spring

Spring boot 的启动方式

落爺英雄遲暮 提交于 2021-02-15 03:32:36
1) 通过main 方法来启动(最常用) 2) cd 到项目目录下:/Users/qiminhui/Documents/idea-workspace3下 mvn spring-boot:run 3) cd 到项目目录下:/Users/qiminhui/Documents/idea-workspace3 mvn install cd target/ java -jar girl-0.0.1-SNAPSHOT.jar 指定配置文件来启动: java -jar girl-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev 指定端口: java -jar girl-0.0.1-SNAPSHOT.jar --server.port=8888 来源: oschina 链接: https://my.oschina.net/u/2861217/blog/3036973

spring-boot的三种启动方式

ε祈祈猫儿з 提交于 2021-02-15 03:00:51
spring-boot的启动方式主要有三种: 1. 运行带有main方法类 2. 通过命令行 java -jar 的方式 3. 通过spring-boot-plugin的方式 一、执行带有main方法类 这种方式很简单,我主要是通过idea的方式,进行执行。这种方式在启动的时候,会去自动加载classpath下的配置文件 (这里只是单独的强调了classpath下,其实spring-boot有自己的加载路径和优先级的,日后在发布). @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") public String home() { return "Hello World"; } public static void main(String[] args) { /** * SpringApplication会自动加载application.properties文件,具体的加载路径包含以下: * <p> * 1. A <b>/config</b> subdirectory of the current directory; * <p/> * <p> * 2. The Current Directory * </p> * <p> * 3. A classpath

Spring 学习笔记8---Spring AOP

那年仲夏 提交于 2021-02-15 00:00:48
前言 容器和AOP是Spring的两大核心。本文将来学习Spring AOP。 AOP是什么? AOP在计算机科学领域还是相对年轻的概念,由Xerox PARC公司发明。Gregor Kiczales 在1997年领导一队研究人员首次介绍了AOP。当时他们关心的问题是如何在大型面向对象的代码库中重复使用那些必要且代价高的样板,那些样板的通用例子具有日志,缓存和事务功能。在最终的研究报告中,Kiczales和他的团队描述了OOP技术不能捕获和解决的问题,他们发现 横切关注点 最终分散在整个代码中,这种交错的代码会变得越来越难开发和维护。他们分析了所有技术原因,包括为何这种纠缠模式会出现,为什么避免起来这么困难,甚至涉及了设计模式的正确使用。该报告描述了一种解决方案作为OOP的补充,即使用“切面aspects”封装横切关注点以及允许重复使用。最终实现了 AspectJ ,就是今天Java开发者仍然使用的一流AOP工具。 也就是说,AOP可不是Spring发明的,Spring只是对AOP做了支持而已。既然如此,AOP里面的几个概念就是通用的了。 《Spring in Action》这本书给出了明确的解释: 在软件开发中,散布于应用中多处的功能被称为横切关注点(cross-cutting concern)。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的。比如:日志、声明式事物

这套面试题你能答出来多少?

馋奶兔 提交于 2021-02-14 23:19:01
引言: 前些天去参加面试,面试官对我出了如下一套面试题,大家不妨利用空闲时间也测试下自己的知识水平,试卷满分150分,你能答出来多少呢? 心动不如行动,赶快测试一下吧! 笔试开始 ▼ 1、下面程序的运行结果是什么?(10) ReentrantLock lock new ReentantLock (Boolean. True); try{ lock.lock(); ..// }catch (Exception e){ ..// }finally{ lock. unlock() ; } 2、聊聊关键字synchronized的工作机制是什么? (10) 3、StringBuilder, StringBuffer的区别是什么? (5) 4、聊聊组合与聚合的区别是什么? (5) 5、SpringMVC的工作原理是什么? (建议图解) (10) 6、浅谈SpringBoot的优势是什么?简单谈谈SpringBoot的启动过程中。@SpringBootApplication包括哪几个注解? (10) 7、SQL优化的原理是什么?若不清晰,则列举己知的优化措施方式(5)。(不少于三种) 8、title与h1两个标签的区别是什么? (5) 9、列举常用的javascript对象(5) 10、样式position有几种取值? 对布局会产生什么影响? (5) 11、父类构造器,子类构造器

微服务架构Day04-SpringBoot之web开发

有些话、适合烂在心里 提交于 2021-02-14 23:13:13
引入项目 把 html 页面放在模板引擎文件夹 templates 下,这样能使用模板引擎的功能。 登录页面国际化 国际化 :编写国际化配置文件 1.编写国际化配置文件,抽取页面需要显示的国际化消息 2.SpringBoot自动配置好了管理国际化资源文件的组件 @Bean @ConfigurationProperties( prefix = "spring.messages" ) public MessageSourceProperties messageSourceProperties() { return new MessageSourceProperties(); } @Bean public MessageSource messageSource(MessageSourceProperties properties) { /* * ResourceBoundleMessageSource extends AbstractResourceBasedMessageSource implements BeanClassLoaderAware * 该实现类允许用户通过beanName指定一个资源名:包括类路径的全限定资源名 * 或者通过beanName指定一组资源名 */ ResourceBundleMessageSource messageSource = new

面试题你能答出来多少?

狂风中的少年 提交于 2021-02-14 22:56:38
引言:前些天去参加面试,面试官对我出了如下一套面试题,大家不妨利用空闲时间也测试下自己的知识水平,试卷满分150分,你能答出来多少呢?心动不如行动,赶快测试一下吧! 1、下面程序的运行结果是什么?(10) ReentrantLock lock new ReentantLock (Boolean. True); try{ lock.lock(); ..// }catch (Exception e){ ..// }finally{ lock. unlock() ; } 2、聊聊关键字synchronized的工作机制是什么? (10) 3、StringBuilder, StringBuffer的区别是什么? (5) 4、聊聊组合与聚合的区别是什么? (5) 5、SpringMVC的工作原理是什么? (建议图解) (10) 6、浅谈SpringBoot的优势是什么?简单谈谈SpringBoot的启动过程中。@SpringBootApplication包括哪几个注解? (10) 7、SQL优化的原理是什么?若不清晰,则列举己知的优化措施方式(5)。(不少于三种) 8、title与h1两个标签的区别是什么? (5) 9、列举常用的javascript对象(5) 10、样式position有几种取值? 对布局会产生什么影响? (5) 11、父类构造器,子类构造器,当子类构造器new的时候

Spring Boot2从入门到实战:统一异常处理

白昼怎懂夜的黑 提交于 2021-02-14 18:54:38
都说管理的精髓就是“制度管人,流程管事”。而所谓流程,就是对一些日常工作环节、方式方法、次序等进行标准化、规范化。且不论精不精髓,在技术团队中,对一些通用场景,统一规范是必要的,只有步调一致,才能高效向前。如前后端交互协议,如本文探讨的异常处理。 1. Spring Mvc中的异常处理 在spring mvc中,跟异常处理的相关类大致如下 上图中,spring mvc中处理异常的类(包括在请求映射时与请求处理过程中抛出的异常),都是 HandlerExceptionResolver 接口的实现,并且都实现了 Ordered 接口。与拦截器链类似,如果容器中存在多个实现了 HandlerExceptionResolver 接口的异常处理类,则它们的 resolveException 方法会被依次调用,顺序由order决定,值越小的先执行,只要其中一个调用返回不是null,则后续的异常处理将不再执行。 各实现类简单介绍如下: DefaultHandlerExceptionResolver : 这个是默认实现,处理Spring定义的各种标准异常,将其转换为对应的Http Status Code,具体处理的异常参考 doResolveException 方法 ResponseStatusExceptionResolver :用来支持@ResponseStatus注解使用的实现

Suppressing violations in pmd

℡╲_俬逩灬. 提交于 2021-02-14 18:49:47
问题 When I run a PMD analysis I receive violation: Each class should declare at least one constructor This violation is on a Spring controller. This controller is instantiated by Spring, so I shouldn't need to invoke this class. What is recommended way of ignoring this violation? According to http://pmd.sourceforge.net/pmd-4.3/suppressing.html can use //NOPMD but I just want to ignore specific violation. 回答1: PMD also supports the @SuppressWarnings annotations: // This will suppress all the PMD

SpringBoot 2.4 集成 Mybatis 链接数据库

余生长醉 提交于 2021-02-14 17:55:33
此文章假定您对Spring Boot和REST API比较了解。它将帮助您将MyBatis集成到Spring-Boot项目中,并开发一些与MySQL数据库进行交互的示例。在本教程的最后,您将拥有创建与关系数据库的基本交互(包括事务和池大小限制)以及与 MySQL 数据库的交互进行单元测试所需的全部功能。 对于本教程,我们将先创建一个Spring Boot 的基本实例 快速创建实例 前往 https://start.spring.io/ 如下所示 点击 GENERATE 生产一个zip解压导入IDEA工具即可 当然我们还需要创建 MySQL 数据库用来运行到你的 MacOS/Linux/win 等系统 windows 安装解压版 mysql-5.7.28-winx64 Linux 安装 Mysql5.7.20 版本 跨平台一键启动常用MySQL/Redis/Rabbit等环境 初始化我们的数据库 resources/init.sql 脚本将为您初始化数据库结构与数据: CREATE DATABASE IF NOT EXISTS `spring_boot` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `spring_boot`; DROP TABLE IF EXISTS `mybatis_test`; CREATE

Dubbo 一些你不一定知道但是很好用的功能

瘦欲@ 提交于 2021-02-14 16:26:47
dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些 你不一定知道,但是很好用 的功能; 直连Provider 在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连模式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表(说明:官方只建议开发&测试环境使用该功能),用法如下,url指定的地址就是直连地址: <dubbo:reference id= "demoService" interface = "com.alibaba.dubbo.demo.DemoService" version= "1.0.0" url= "dubbo://172.18.1.205:20888/" /> 多版本 当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用,用法如下: <dubbo:service interface = "com.alibaba.dubbo.demo.DemoService" ref= "demoService" version= "1.0.0" /> 利用dubbo该特性,我们能够实现一些功能的灰度发布,实现步骤如下: 接口旧的实现定义version="1.0.0",接口新的实现version="2.0.0"