spring框架

浅谈微服务架构

拟墨画扇 提交于 2020-03-10 13:52:04
微服务来源 单体应用 微服务是相对于单体应用的,在介绍微服务之前,先简单介绍一下单体应用:通常是由三个重要部分组成:客户端界面(由HTML、JavaScript组成)、数据库(由许多的表组件构成一个通用的、相互关联的数据管理系统)、服务端应用。服务端应用处理客户端的HTTP请求、执行逻辑、检索并更新数据库中的数据、然后将处理后的数据返回给客户端。 一个单体应用被构建成一个系统时,业务中所有请求都要在单一的进程中处理完成,当访问量很高情况下服务器压力是很大的。当然可以水平扩展,利用负载均衡将实例布署到多台服务器中。 单体架构的缺点 [ ] 开发效率低 [ ] 代码维护难 [ ] 部署不灵活 [ ] 稳定性不高 [ ] 扩展性不高 云时代 在此之前单体应用也是很成功的,但是随着云时代的到来,单体应用就显得有些不妥了,特别是应用程序发布到云端的时候,一个功能的变更,需要统一的编译和发布。这样的架构模式很难使得一个模块的变更不影响到其他模块,而且在扩展方面也只能进行整体的扩展,不能根据正在运行的部分进行扩展。 微服务架构风格 云时代单体应用的尴尬导致了微服务架构风格的出现:以服务构建应用。 一个系统由多个服务组成,各服务可以被独立布署、独立扩展,每个服务也都提供了清晰的模块边界,甚至不同的服务都可以使用不同的编程语言来实现,也可以由不同的团队进行管理。 微服务介绍

Spring 03 依赖注入

有些话、适合烂在心里 提交于 2020-03-10 11:35:55
依赖注入:Dependency Injection。它是 spring 框架核心 ioc 的具体实现。 我们的程序在编写时,通过控制反转,把对象的创建交给了 spring,但是代码中不可能出现没有依赖的情况。 ioc 解耦只是降低他们的依赖关系,但不会消除。例如:我们的业务层仍会调用持久层的方法。 那这种业务层和持久层的依赖关系,在使用 spring 之后,就让 spring 来维护了。 简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。 构造函数注入 使用类中的构造函数,给成员变量赋值。注意,赋值的操作不是我们自己做的,而是通过配置的方式,让 spring 框架来为我们注入。 /** */ public class AccountServiceImpl implements IAccountService { private String name ; private Integer age ; private Date birthday ; public AccountServiceImpl ( String name , Integer age , Date birthday ) { this . name = name ; this . age = age ; this . birthday = birthday ; } @Override public

Spring核心技术之Ioc和AOP

烂漫一生 提交于 2020-03-10 07:52:08
一、Spring应用环境的配置: 1. 在classpath中添加以下包: 1) SPRING_HOME/dist/spring.jar、 2) SPRING_HOME/lib/jakarta-commons/commons-logging.jar 3) SPRING_HOME/lib/log4j/log4j-1.2.xx.jar 2.在classpath中添加Spring的配置文件:applicationContext.xml 在SPRING_HOME/samples/jpetstore/war/WEB-INF目录下有样板文件。 二、IoC容器: 1. IoC概念:反向控制、控制反转。对象不需要主动去查找依赖类的实例。而是由其它应用给它注入。 DI:依赖注入。 2. Spring对IoC的支持:Spring 提供了BeanFactory和ApplicationContext这两种IoC容器,来帮助你管理Bean、Bean之间的依赖关系以及Bean的生命周期。 三、Spring中IoC: 1. Bean装配:在Spring配置文件中用<bean>标记来装配一个Bean. <bean id="Bean在Spring容器中的唯一标识" class="Bean类的全限定名">...</bean> 2. 用setter方法注入它的依赖类: 1)

Spring框架学习的第三天(SpringIOC注解开发和SpringDI注解开发_Spring注解开发操作数据库完成增删改查)

为君一笑 提交于 2020-03-10 04:04:22
一、SpringIOC注解开发 1.pom.xml导入依赖 <!--Spring依赖--> <dependencies> <!--spring核心依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.4.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency> </dependencies> 2.@Component注解替代bean标签完成SpringIOC中对象的配置 3.在实际项目开发时使用的是Component衍生的注解,Spring中提供了与Component等效的三个注解:@Service @Controller @Repository 3.1

SpringBoot学习笔记

不打扰是莪最后的温柔 提交于 2020-03-10 02:28:02
什么是Spring Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。 spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的非入侵式框架(容器) Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1、基于POJO的轻量级和最小侵入性编程; 2、通过IOC,依赖注入(DI)和面向接口实现松耦合; 3、基于切面(AOP)和惯例进行声明式编程; 4、通过切面和模版减少样式代码; 什么是SpringBoot ​随着 Spring 不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念。Spring Boot 正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用 Spring 、更容易的集成各种常用的中间件、开源软件; Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring

Spring整合Mybaits

跟風遠走 提交于 2020-03-09 21:31:11
分享一下自己的Spring框架整合Mybaits框架的步骤,话不多说,上整合步骤,以java项目为例: 整合思路: SqlSessionFactory -> SqlSession ->StudentMapper ->CRUD 可以发现 ,MyBatis最终是通过SqlSessionFactory来操作数据库, Spring整合MyBatis 其实就是 将MyBatis的SqlSessionFactory 交给Spring 项目结构: 第一步:导入整合过程中所需要的jar包,所需要的jar包如下,如果没有jar包可以去maven库中搜索进行下载:     mybatis-spring.jar spring-tx.jar ojdbc.jar mybatis.jar     spring-jdbc.jar spring-expression.jar log4j.jar     spring-context-support.jar        spring-core.jar commons-pool.jar     spring-context.jar         spring-beans.jar     spring-aop.jar           spring-web.jar     commons-logging.jar          commons-dbcp.jar

Spring框架学习——AOP的开发

时光怂恿深爱的人放手 提交于 2020-03-09 20:40:56
一.AOP开发中的相关术语。   ——JoinPoint(连接点): 指那些可以被拦截到的点。比如增删改查方法都可以增强,这些方法就可以被称为是连接点。   ——PointCut: 切入点,真正被拦截的点,指对哪些连接点进行拦截的定义。JoinPoint是指方法可以增强,而切入点就是实际哪个方法进行增强或修改,这样的方法被称为切入点。    ——Advice(增强/通知): 方法层面的增强。指拦截到了方法后需要做的事情,也就是增强的功能部分被称为通知。分为前置(方法主体之前)、后置、环绕通知。     ——Introduction(引介):是一种特殊的通知,再不修改类代码的前提下进行类层面的增强。   ——Target:代理的目标对象,在AOP中也可以说是被增强的对象,如对UserDao增强,那么UserDao就是目标对象。   ——Weaving(织入):指将通知(Advice)应用到目标(Target)的过程。 也就是将增强应用到目标对象来创建新的代理对象的过程。Spring采用动态织入的方式。   ——Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类。   ——Aspect(切面):是多个切入点和多个通知(引介)的结合。在代理中可能有切面。 二、Spring使用AspectJ进行AOP开发( XML方式 )   A.创建动态web项目,引入jar包。    

面试题、一

*爱你&永不变心* 提交于 2020-03-09 18:45:52
1.描述下数据库中的事务--ACID各个的特点 原子性(Atomicity):事务中的操作要么全部成功要么全部失败。 一致性(Consistency):事务前后数据的完整性必须保持一致。 隔离性(Isolation):多个并发的事务之间是相互隔离的,互不干扰的。 持久性(Durability):事务提交后,数据是永久改变的。 2.什么是springboot?你们公司是用的哪个版本? SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件操作繁杂并基于Maven的解决方案,主要目的是能够快速搭建单个微服务。 Spring boot 的优点 轻松创建独立的Spring应用程序 内联Tomcat、jetty等web容器,不需要部署WAR文件。 提供一系列的“starter”来简化的Maven配置 开箱即用,尽可能自动配置Spring 版本号:2.1.6 3.什么是redis? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis优势 性能极高-Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型-Redis支持二进制案列的String,Lists,Hashes,Sets及Ordered Sets 数据类型操作。 原子—Redis的所有操作都是原子性(不可再分)的

SpringBoot简介

こ雲淡風輕ζ 提交于 2020-03-09 17:32:28
1.背景 J2EE开发笨重,配置多效率低,部署复杂,难以扩展。 2.微服务 微服务是一种架构风格。 打破了之前all in one 的架构方式,把每个功能元素独立出来。当你需要这个功能元素才把它拿来,进行动态组合。微服务对功能元素进行复制,而不是整个应用。 好处: 1.节省了调用资源的消耗 2.每个功能元素的服务都是一个可替换的,可独立升级的软件单元 3.SpringBoot 使用微服务的思想,来简化Spring。约定大于配置,去繁化简。 优点: 快速独创建立运行的Spring项目以及主流框架的集成 使用嵌入式的Servlet容器,无需打war包 strats自动依赖与版本控制 大量的自动配置,简化开发 无需配置XML,无代码生成,开箱即用 准生产环境的运行时应用监控 与云计算的天然集成 来源: https://www.cnblogs.com/qdw-home/p/12449633.html

Spring Boot AOP记录用户操作日志

浪子不回头ぞ 提交于 2020-03-09 16:11:11
在Spring框架中,使用AOP配合自定义注解可以方便的实现用户操作的监控。首先搭建一个基本的Spring Boot Web环境 开启Spring Boot ,然后 引入必要依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- aop依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <!-- mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> <!-- druid数据源驱动 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter<