spring框架

spring面试题

梦想的初衷 提交于 2020-03-16 08:41:43
1.选择使用Spring框架的原因? 使用Spring: 第一是使用它的IOC功能,在解耦上达到了配置级别。 第二是使用它对数据库访问事务相关的封装。 第三就是各种其他组件与Spring的融合,在Spring中更加方便快捷的继承其他一些组件。 2.Spring 是如何管理事务的? spring的事务声明有两种方式,编程式和声明式。spring主要是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,最大的好处是大大减少了代码量。 3.Spring IoC容器配置Bean的方式? 答: 基于XML文件进行配置。 基于注解进行配置。 基于Java程序进行配置(Spring 3+) 4.Bean 是如何被管理的? 在Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。 概括来说主要有四个阶段:实例化,初始化,使用,销毁。 5.阐述Spring框架中Bean的生命周期? ApplicationContext容器中,Bean的生命周期流程如上图所示,流程大致如下: 1.首先容器启动后

2019JAVASpring面试题集总结

心不动则不痛 提交于 2020-03-16 08:39:03
**什么是 spring?** 答:spring是个 Java企业级应用的开源开发框架。Spring主要用来开发 Java应用,但是有些扩 展是针对构建 J2EE平台的 web应用。 Spring框架目标是简化 Java企业级应用开发,并通过 POJO为基础的编程模型促进良好的编 程习惯 **使用 Spring框架的好处是什么?** 轻量:Spring是轻量的,基本的版本大约 2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找 依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的 WEB框架是个精心设计的框架,是 Web框架的一个很好的替代品。 事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务 (JTA)。 异常处理:Spring提供方便的 API把具体技术相关的异常(比如由 JDBC,hibernateorJDO 抛出的)转化为一致的 unchecked异常。 **IOC的优点是什么?** 答:IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和 JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现

SpringBoot——学习笔记

本小妞迷上赌 提交于 2020-03-16 06:57:58
关于微服务和SOA 这,仅是我学习过程中记录的笔记。确定了一个待研究的主题,对这个主题进行全方面的剖析。笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长。不止是技术。 官网教程学习https://www.martinfowler.com/microservices/ 关于微服务的认识 马丁福乐的论文学习 DDD 领域驱动设计 component 组件 微服务数据治理与去中心化 任何的服务调用都会出现失败的情况 熔断器 微服务的优点和缺点 测试和向后兼容会变的更加的复杂 微服务与传统单体应用项目的区别 微服务宏观把控与深度剖析 ESB(企业服务总线) SOA(面向服务架构)主要针对于企业级,单用ESB,需要序列化和反序列化,采用XML格式传输。 微服务架构主要用于互联网公司。可以独立运行。HTTP+REST+JSON 单体架构存在的缺点: 复杂性高,无法按需伸缩,阻碍技术创新,部署速度逐渐编码,技术债务逐渐上升。 什么是微服务? 简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这种轻量的机制来相互通信。这些服务为夭折业务功能进行构建通过全自动的部署机制来进行独立部署。这些服务可以用不同的语言来编写,并且可以使用不同的数据存数技术。 微服务是一种架构风格

java框架篇---spring IOC依赖注入

笑着哭i 提交于 2020-03-16 00:05:19
spring依赖注入的方式有4种 构造方法注入 属性注入 工厂注入 注解注入 下面通过一个实例统一讲解: User.java package com.bjsxt.model; public class User { private String username; private String password; public User(){} public User(String username, String password) { super(); this.username = username; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username +

从零开始学SpringBoot之Mybatis-注解

大兔子大兔子 提交于 2020-03-15 17:11:48
需求来源: 在视频中,有一条消息:“SpringBoot会将mybaits配置文件sqlmapconfig.xml的视频与mapper.xml集成吗?看到直接支付的集成,结果是快速开发模式,SQL是在类中编写的,想看看配置模式之神创建一个吗?”粉丝需要,这才是真正的需要。好吧,胡说太多了,不好,不好。让我们直说重点。 本节概述: (1) 关于mybatis (2) 注解思想 (3) 新建项目并添加依赖项包 (4) 创建启动类App.java (5) 编写实体类演示 (6) 写映射接口DemoMapper (7) 编写服务类DemoService (8) 写控制类DemoController (9) 配置数据库连接池 (10) 测试 让我们来看看这个部分: (1) 关于mybatis 资料来源:mybatis是Apache和iBatis的一个开源项目。2010年,这个项目从Apache软件基金会迁移到Google代码中,并重命名为mybatis。2013年11月搬到GitHub。 简介:mybatis是一个优秀的持久层框架,支持常见的SQL查询、存储过程和高级映射。Mybatis几乎消除了JDBC代码和参数的所有手动设置以及结果集的检索。Mybatis使用简单的XML或注释进行配置和原始映射,将Java的接口和POJOs(普通Java对象)映射到数据库中的记录。 (2) 注解思想

Spring中的事务管理

北慕城南 提交于 2020-03-15 09:20:16
一、事务简介 事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四个关键属性(ACID) 原子性(atomicity): 事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用. 一致性(consistency): 一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中. 隔离性(isolation): 可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来, 防止数据损坏. 持久性(durability): 一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响. 通常情况下, 事务的结果被写到持久化存储器中 Spring 中的事务管理 作为企业级应用程序框架,Spring 在不同的事务管理 API 之上定义了一个抽象层. 而应用程序开发人员不必了解底层的事务管理 API, 就可以使用 Spring 的事务管理机制. Spring 既支持编程式事务管理, 也支持声明式的事务管理. 编程式事务管理: 将事务管理代码嵌入到业务方法中来控制事务的提交和回滚. 在编程式管理事务时, 必须在每个事务操作中包含额外的事务管理代码. 声明式事务管理:

Spring Data Jpa 详解 (配置篇)

删除回忆录丶 提交于 2020-03-15 02:07:35
前言:    JPA 全称 Java Persistence API ,即Java持久化API,它为Java开发人员提供了一种 对象/关系映射 工具来管理Java应用中的关系数据,结合其他ORM的使用,能达到简化开发流程的目的,使开发者能够专注于实现自己的业务逻辑上。   Spring Jpa 能够 简化创建 JPA 数据访问层和跨存储的持久层功能,用户的持久层Dao接口只需要继承他自己定义好的(仓库)接口, 无需再写实现类 ,就可以实现对象的CRUD操作,还有分页排序等功能。    写本章之前本来想写一个SpringMVC的,后来发现Jpa的配置可以大大简化MVC框架的配置,就先研究研究Spring Data Jpa。 准备工作:   jar包支持(不用说都知道,本章jar包待我会放在115网盘供下载) web.xml配置(监听Spring容器的装载) 本章采用的是阿里连接池(Druid),所以web.xml要有相关的配置 Spring容器的配置(主要为beans和jpa) Jpa的主要配置(实体类管理、数据源、连接池、事务等) 实体类、持久层接口、业务层的创建 测试放在下一章节中(因为采用了SpringJunit单元测试, 点击前往 ) 先来看一下本章节用到的 包结构--如下图 :    实例代码演示: ****************最后我会把本章的项目打包供下载******

阿里Dubbo疯狂更新,关Spring Cloud什么事?

非 Y 不嫁゛ 提交于 2020-03-14 08:21:55
最近,开源社区发生了一件大事,那个全国 Java 开发者使用最广的开源服务框架 Dubbo 低调重启维护,并且 3 个月连续发布了 4 个维护版本。 我上次在写 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结 这篇文章的时候,就有很多的网友给我留言说,Dubbo 又开始更新了。我当然是清楚的,我也一直在关注着 Dubbo 的走向,在几个月前技术圈里面就有一个消息说是 Dubbo 又开始更新了,大家议论纷纷不知真伪。我还专门跑到 GitHub 上面进行了留言询问,最后在 Dubbo 的 gitter 聊天室里面找到了确信的答案,说是正在组建团队。虽然稍稍有所期待,但也不知道阿里这次拿出了多少的诚意来做这件事,于是我昨天又到 GitHub 逛了一下,发现从 9 月开始,阿里三个月连着发布了四个版本,还是非常有诚意的,值得关注。 Dubbo简介 Dubbo 是阿里巴巴公司一个开源的高性能服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案,使得应用可通过高性能 RPC 实现服务的输出、输入功能和 Spring 框架无缝集成。Dubbo 包含远程通讯、集群容错和自动发现三个核心部分。 它提供透明化的远程方法调用,实现像调用本地方法一样调用远程方法,只需简单配置,没有任何 API 侵入。同时它具备软负载均衡及容错机制

SpringBoot与日志

无人久伴 提交于 2020-03-14 06:15:07
1. 日志框架 日志抽象层: JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging 日志实现: Log4j JUL(java.util.logging) Log4j2 Logback 日志级别,由低到高 logger.trace() logger.debug() logger.info() logger.warn() logger.error() SpringBoot选用 SLF4J 和 Logback ,引入其他框架的时候,需要把该框架依赖的日志框架排除; 2. SLF4J 使用 // 需要导入 slf4j.jar 和 logback.jar import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } } 2.1 将其他日志框架统一转换为SLF4J 参考资料: Spring Boot 全集 SLF4J user

在家办公2周,准备离职了...

六月ゝ 毕业季﹏ 提交于 2020-03-14 00:55:25
以前,特别羡慕在家办公一族,感觉好爽。 没有烦人的闹钟,没有忙碌的早晨,没有拥挤的地铁,没有强制的打卡。 9点上班,8点55醒也不怕迟到。 床在桌边,饭在桌上,家里的一切都那么安逸。 即使做同样的事情,心情肯定是愉悦的 我可以撸上一整天的代码! 想想就兴奋,可是... 如今,因为疫情的原因,很多人已经体验到了在家办公的滋味。 这滋味,好像没有想象的那样甜。 以前在公司撸码,下班回家了,只要不遇到紧急事情,一般不会有人再打扰你,回家就等于下班。 在家办公后,没有了固定上下班概念,24小时微信、钉钉待命,群回复慢了又被批,领导会要求员工每天进行工作总结,事无巨细全盘列出进行审核。 可以说,以前公司996,现在在家007。 在家办公后,不但没有了自己的时间安排,反而被压榨更多。 每天的日报、日报、日报... 这个时候,如果可以选择,我选择回到过去。 整理好当天的日报,想了很多,去年5%的涨薪(听说行业平均涨薪也有8%),委屈了一年多,长时间的CRUD,技术能力也得不到提升。 也许,是时候为下一份工作准备准备了。 幸好,远程办公有一个好处,虽然需要更长时间的on call,但是时间分配相对来说更加的自由一点,所以抓紧这些时间空隙充电学习。 前段时间搜集的对标阿里、京东等大厂Java岗的技术点,把相应的学习文档以及视频整理了出来,趁这个机会好好学习一番,金三银四一展身手 微服务 “微服务