前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot简介

SpringBoot简介

作者头像
西红柿炒鸡蛋
发布于 2020-01-15 08:06:07
发布于 2020-01-15 08:06:07
61500
代码可运行
举报
文章被收录于专栏:自学笔记自学笔记
运行总次数:0
代码可运行

springBoot与springMVC的特点

首先springboot最亮眼的特点就是简单,其次也是入门级的微服务,同时springBoot提供了一整套的微服务。

  • 1.使用的是idea作为编译器,在配置启动springboot的过程中遇到了写问题,提示springframework.boot.test.comtext不存在,找了很久,其实是因为包没下完。可能在下载的过程中出现了网络不顺畅,导致下来一个空文件夹,然后maven检查了一下发现存在文件夹了,就没有检查里面到底东西齐了没有。所以,解决方法就是打开.m2的仓库,将里面springframework的东西全部删掉,然后让他重新下载。
  • 2.第二个问题的原因还未知,出现了# 报错No active profile set, falling back to default profiles,按照网上的解决方法,都是加上一个spring-boot-starter-web的注解即可,但是我这个不可以,尝试着点击maven里面clean,再重新install,居然好了。

但是还有一些问题:

这些划红线的包,还没有下下来,但是不影响使用。

配置文件

配置有两种方法,其一,使用spplication.properties:

其二就是使用application.yml这种方式:

这是一种语法格式,注意:号后面要有空格。

配置中有一个比较秀的操作,就是配置对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
first:
  A: 12
  B: 22
  C: 33
  minMoney: 1
  description: 最少${first.minMoney}

在yml配置文件中写上。 在类里面新建一个对象,名字随便取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Component
@ConfigurationProperties(prefix = "first")
public class FirstConfig {
    private Integer A;
    private Integer B;
    private Integer C;
    private BigDecimal minMoney;

    public BigDecimal getMinMoney() {
        return minMoney;
    }

    public void setMinMoney(BigDecimal minMoney) {
        this.minMoney = minMoney;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

    private String Description;

    public Integer getA() {
        return A;
    }

    public void setA(Integer a) {
        A = a;
    }

    public Integer getB() {
        return B;
    }

    public void setB(Integer b) {
        B = b;
    }

    public Integer getC() {
        return C;
    }

    public void setC(Integer c) {
        C = c;
    }
}

注意要加上@component和@configurepropertis,如果需要在controller里面运行,只需要调用自动装配即可。

持久化配置

在Mac控制台启动了很多次数据库发现都不行,查了一下命令也没错呀,结果发现是因为没有启用MySQL数据库,尴尬了。使用mysql -u root -p启动数据库,接着就是再application.yml里面进行配置了。

如果想要创建一个表,不需要在控制台打开MySQL写SQL语句,只需要创建一个类即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Entity
public class Luckymoney {
    @Id
    @GeneratedValue
    private Integer id;
    private BigDecimal money;
    /**
     * 发送,接收方
     */
    private String producer;
    private String comsumer;

    public Luckymoney() {
    }

}

这个时候再启动控制台:

log日志显示

可以看到表里面已经有属性了

如果再重新启动一遍,他会把原来表里面的大小删了再重新写一遍,这是因为在原来ddl-auto里面设置了create,把它改成update就好了。

接着就是进行简单的jpa操作,非常简洁:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface LuckymoneyRepository extends JpaRepository<Luckymoney, Integer> {

}

jpa定义了一个标准,而hibernate实现了他,所以只需要调用这个接口就好了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RestController
public class LuckymoneyController {
    @Autowired
    private LuckymoneyRepository luckymoneyRepository;

    @GetMapping("/luckymoneys")
    public List<Luckymoney> list() {
        System.out.println(luckymoneyRepository.findAll().get(0));
        return luckymoneyRepository.findAll();
    }
}

使用postman测试:

太久没有编码了,出现了很多意外,比如忘记在entity实体类里面加上getset方法,导致查出来装不进去,查出来是空。 在实现基本操作的时候注意数据库能不能支持事务。事务这个东西是指数据库的事务,不是指Java里面的事务,所以关键还是要看看数据库有没有支持事务操作。MySQL比较特殊,他可以支持,也可以不支持,这个时候就要看看用的engine,如果使用myisam这种引擎,他是不能支持事务的,就算加上Transactional这个注解也没有用,而需要改成innoDB。使用show variables like "%storage_engine%"查看当前引擎,ALTER TABLE luckymoney ENGINE=InnoDB;修改引擎即可。


接下来就是相关与WEB了

首先是aop,aop这种东西是一种编程规范,在之前学习ssm的时候就知道,但没有深入学习,只是知道这个东西是面向切面编程而已。aop其实换一个角度看问题而已,将通用的逻辑从业务逻辑中划分出来。用日志加以说明: 对于一个请求,他的生命周期是这样的: 收到HttpRequest请求 | 记录请求 | 处理网络请求 | 生成HttpResponse | 记录回复

对于数据库也是一样的: 收到数据库的请求 | 记录请求 | crud | 生成处理结果 | 记录回复 原来我们都是上到下看,现在切面看,我们发现第一第二步,第三第四步可以做为业务处理,最后一步可以作为log处理,这个时候就按照切面分了。

注意还要在pom里面导入aop包。

首先要创建一个日志记录的类,HttpAspect,用来记录请求。使用LoggerFactory创建一个logger,注意是创建属于slf4j的那个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);

创建一个拦截方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Pointcut("execution(public * com.greenarrow.luckymoney.controller.LuckymoneyController.*(..))")
    public void log() {
    }

创建这个拦截方法是为了方便,免得代码冗余。 在拦截前后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Before("log()")
    public void doBefore(JoinPoint joinPoint) {//在输出前这个log要干什么
    @After("log()")
    public void doAfter() {//输出后这个log要干什么

如果不用Pointcut,在每一个before after之后都要写上execution。 有时候还想要其打印出具体内容,可以调用一个afterreturning方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @AfterReturning(returning = "object", pointcut = "log()")
    public void doAfterReturning(Object object){
        logger.info("response={}", object);
    }

测试

测试也是比较简单的,主要就是controller测试的区别,普通的service测试直接加上两个注解RunWith SpringRunner即可,controller有所区别,controller是需要外部请求的,所以需要一个MockMvc驱动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
class LuckymoneyControllerTest {

    @Autowired
    private MockMvc mockMvc;
    @Test
    void list() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/luckymoneys")).andExpect(MockMvcResultMatchers.status().isOk());
    }

MockMvc代替执行HttpRequest.

Guns框架

guns是一个能够快速构建后台管理系统的开源软件,guns框架更注重的是后台管理系统。 guns首先是使用maven管理,这里使用的还是v3.0版本,如果是更高的版本可能有所不同:

guns-parent就是guns的maven父工程,所以parent是一个父工程,然后就是guns-core就是核心包,比如字符串处理,日志处理等等都在这里。guns-generator的代码生成,guns-admin就是guns的基础业务 ,guns-rest就是guns的rest支持。 加载还是出现了不少问题。这里使用的是gunsV3.0版本,按照网上的步骤,加载有两种方式,一种是直接用idea打开guns文件夹,一种是打开guns-parents文件夹,但是好像第一种有问题,关键是idea不知道是抽风了还是怎么的,没有识别出这个guns项目是maven项目,导致要自己添加maven配置,添加的时候不知道选择哪个pom文件,其实应该选择guns-parents的pom.xml文件的,但是之前不知道。这里采用第二种打开,直接选择guns-parents,guns-parents是父工程,你把他导入进去了,那么他也会把其他的三个工程导入进来,接着就是要更该sql配置了,首先把sql里面的SQL语句在自己的MySQL上面运行,然后把application.yml里面的密码改了,这里采用MySQL5.7.28,因为gunsV3.0就支持5.7,然后启动运行即可。出现GunApplication is success就成功了。使用localhost访问:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot 初入门
移动到项目的 target 目录下,可以看到一个后缀名为 jar 的文件,便是刚刚我们打包的 jar 包,
希希里之海
2019/06/25
6210
Spring Boot 知识点速记
本文是学习2小时学会Spring Boot和Spring Boot进阶之Web进阶的SpringBoot常用知识点速记。 SpringBoot前置知识: Spring:相关资料参考Spring知识点速查 Maven:相关资料参考Maven知识点速查 项目属性配置 配置项 resources/application.yml girl: cupSize: B age: 18 自动注入类中 @Component @ConfigurationProperties(prefix = "girl") publi
linxinzhe
2018/04/10
1.3K0
Spring Boot
Spring Boot 的角色:Spring Framework -> Spring Boot -> Spring Cloud。
数媒派
2022/12/01
9810
肝了一周总结的SpringBoot常用注解大全,看完就炉火纯青了!
这里整理了一张SpringBoot常用注解的思维导图,本文主要讲解这些注解的用法。
macrozheng
2022/12/16
1.2K0
肝了一周总结的SpringBoot常用注解大全,看完就炉火纯青了!
Spring学习笔记(二十一)——规范开发:SpringBoot表单验证、AOP切面编程、统一返回结果和异常处理
SpringMVC中使用Controller需要配合ResponseBody来返回json格式,springboot4后只需配置RestController就能实现返回json
不愿意做鱼的小鲸鱼
2022/09/26
7400
Spring学习笔记(二十一)——规范开发:SpringBoot表单验证、AOP切面编程、统一返回结果和异常处理
初识SpringBoot Web开发
虽说前端的h5和js都可以完成表单的字段验证,但是这只能是防止一些小白、误操作而已。如果是一些别有用心的人,是很容易越过这些前端验证的,有句话就是说永远不要相信客户端传递过来的数据。所以前端验证之后,后端也需要再次进行表单字段的验证,以确保数据到后端后是正确的、符合规范的。本节就简单介绍一下,在SpringBoot的时候如何进行表单验证。
端碗吹水
2020/09/23
4660
初识SpringBoot Web开发
SpringBoot之路(二)之Web进阶
前言 昨天 -> 带女朋友和小表弟去了动物园,看了《全球风暴》电影。 今天 -> 学习了慕课网的Spring Boot进阶之Web进阶的视频和该项目 项目源码,看了一个基于Spring Boot的API、RESTful API项目种子(骨架)的博客。 明天 -> 准备看纯洁的微笑的博客,更深入的学习Spring Boot相关知识。 该学习笔记Demo项目地址是Spring Boot 简单实例Demo ---- 表单验证 1.数据验证不仅要在前端进行验证,而且还要在后台进行验证。防君子也防小人
用户2032165
2018/06/05
8310
(14)SpringBoot使用AOP
   摘要:本文示例,是在一个简单的SpringBoot项目中,通过AOP技术,来实现对接口访问时的信息统计,和接口耗时统计。
IT云清
2022/05/07
1.4K0
(14)SpringBoot使用AOP
Spring Boot---(25)SpringBoot使用AOP
摘要:本文示例,是在一个简单的SpringBoot项目中,通过AOP技术,来实现对接口访问时的信息统计,和接口耗时统计。
IT云清
2019/01/22
5840
SpringBoot读写分离
①可以开两个docker ②也可以在一个MySQL服务器中用2个数据库
CBeann
2023/12/25
2090
SpringBoot读写分离
springboot的介绍_springboot官网
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。
全栈程序员站长
2022/11/09
11.7K0
springboot的介绍_springboot官网
SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合
spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装。所以,你以前可以用spring做的事情,现在用spring boot都可以做。它是简化Spring应用开发的一个框架,是整个Spring技术栈的一个大整合,是J2EE开发的一站式解决方案。使用springboot,你可以达到快速开发的目的,不像以前使用spring的时候,即使整合一个小小的web项目,也要进行很多相关的配置才能使用,效率低下。
全栈程序员站长
2021/09/29
4260
SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合
Spring Boot如何利用AOP巧妙记录操作日志?
SpringAOP的相关的知识点包括源码解析,我已经在之前的文章中详细说明,如果对AOP的概念还不是特别清晰的话。
烂猪皮
2021/01/14
1.2K0
Spring Boot如何利用AOP巧妙记录操作日志?
SpringBoot 2.x 进阶 之 Web
接着上一篇,SpringBoot2.x 教你快速入门,本篇内容我们来学习 SpringBoot2.X 进阶 Web 方面开发常用的一些知识点。
AI码真香
2022/09/13
4580
SpringBoot 2.x  进阶 之 Web
Spring Boot Web 开发相关总结
首先, 在实体类的需要验证的字段上添加添加验证注解, 验证注解类主要在 validation-api-1.1.0.Final.jar 的 javax.validation.constraints 包下, 以及 hibernate-validator-5.3.6.Final.jar 的 org.hibernate.validator.constraints 包下, 常用验证注解: @Min @Max @Length @Email 等.
北漂的我
2019/05/28
4560
Springboot之多数据源的配置使用
现在的企业服务逐渐地呈现出数据的指数级增长趋势,无论从数据库的选型还是搭建,大多数的团队都开始考虑多样化的数据库来支撑存储服务。例如分布式数据库、Nosql数据库、内存数据库、关系型数据库等等。再到后端开发来说,服务的增多,必定需要考虑到多数据源的切换使用来兼容服务之间的调用。为解决这一难题,今天就来分享一个关于多数据源的切换使用配置。
23号杂货铺
2019/09/26
1.6K0
Spring-AOP实践 - 统计访问时间
公司的项目有的页面超级慢,20s以上,不知道用户会不会疯掉,于是老大说这个页面要性能优化。于是,首先就要搞清楚究竟是哪一步耗时太多。 我采用spring aop来统计各个阶段的用时,其中计时器工具为StopWatch。 其中,遇到的问题: 1.少包aspectjweaver 添加依赖后才可以使用@Aspect 2.环绕通知加入多个point 刚开使用&&连接多个point,傻傻的看不到调用,忽然看到要用||才对 3.监听时间工具StopWatch每次只能启动一个,一定要关闭后才能启动下一个。 而我想要测试c
Ryan-Miao
2018/03/13
2.2K0
Spring-AOP实践 - 统计访问时间
SpringBoot-实用篇
小简从 0 开始学 Java 知识之 Java-学习路线 中的《SpringBoot-实用篇》,不定期更新所学笔记,期待一年后的蜕变吧!
小简
2023/01/04
1.6K0
SpringBoot-实用篇
springboot aop 自定义注解方式实现完善日志记录(完整源码)
主要记录的信息有: 操作人,方法名,参数,运行时间,操作类型(增删改查),详细描述,返回值。
用户1518699
2019/11/29
3.4K0
SpringBoot+Mybatis+Swagger2环境搭建
SpringBoot相对于传统的SSM框架的优点是提供了默认的样板化配置,简化了Spring应用的初始搭建过程,如果你不想被众多的xml配置文件困扰,可以考虑使用SpringBoot替代
Rookie
2019/10/24
8100
相关推荐
SpringBoot 初入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验