spring框架

2.SpringMVC入门

寵の児 提交于 2020-02-19 15:15:14
转载:https://blog.kuangstudy.com/index.php/archives/311/ 转载:https://blog.kuangstudy.com/index.php/archives/318/ 一.什么是SpringMVC 1.概述 Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。 查看官方文档: https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web 我们为什么要学习SpringMVC呢? Spring MVC的特点: 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼容性好,无缝结合 约定优于配置 功能强大:RESTful、数据验证、格式化、本地化、主题等 简洁灵活 Spring的web框架围绕 DispatcherServlet [ 调度Servlet ] 设计。 DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁; 正因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成

spring cloud分布式微服务-Spring Boot 整合 Shiro

自古美人都是妖i 提交于 2020-02-19 14:13:46
在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro。 般来说,Spring Security 和 Shiro 的比较如下: 了解springcloud架构可以加求求:三五三六二四七二五九 Spring Security 是一个重量级的安全管理框架;Shiro 则是一个轻量级的安全管理框架 Spring Security 概念复杂,配置繁琐;Shiro 概念简单、配置简单 Spring Security 功能强大;Shiro 功能简单 虽然 Shiro 功能简单,但是也能满足大部分的业务场景。所以在传统的 SSM 项目中,一般来说,可以整合 Shiro。 在 Spring Boot 中,由于 Spring Boot 官方提供了大量的非常方便的开箱即用的 Starter ,当然也提供了 Spring Security 的 Starter ,使得在 Spring Boot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 Spring Boot 项目,一般选择 Spring Security 。 这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。 在 Spring Boot 中整合 Shiro

spring面向切面编程(AOP)

谁说我不能喝 提交于 2020-02-19 04:04:29
AOP(Aspect Oriented Programing)面向切面编程 AOP是一种编程范式,隶属于软工范畴,指导开发 者如何组织程序结构 AOP弥补了OOP的不足,基于OOP基础之上进行 横向开发 AOP联盟 一、OOP范式编程 OOP规定程序开发以类为模型,一切围绕对象进行, OOP中完成某个任务首先构建模型,基于模型展开 业务 OOP主要应用于WEB开发,围绕OOP的主思想, 对开发过程进行了分层设计 二、AOP范式编程 AOP范式编程研究的不是层与层之间的关系,也不 是每层内部如何开发,AOP主要关注同一层面的各 个不同功能模块之间的共性功能。 AOP时代的到来,使开发模块化的思想进行了进一 步的提升,从刀耕火种的纯手工开发阶段,向半自 动化/自动化阶段进行了一个大的突破。IT研发朝着 “插拔式组件体系结构”又近了一步。 三、基本概念(重点) 1、连接点(Joinpoint) 2、切入点(Pointcut) 3、通知(Advice) 4、目标对象(Target Object) 5、AOP代理(AOP Proxy) 6、织入(Weaving) 7、切面(Aspect) 1、连接点(Joinpoint) ①、程序运行过程中,JVM负责程序运行。执行到某个 方法时,JVM能识别当前执行的是哪个方法。这些 定义在类中的方法,每个具有独立的功能,在AOP 中

SpringBoot中静态资源访问方案

折月煮酒 提交于 2020-02-19 01:33:03
一、静态资源到底要放在哪里 学习之前,先了解一下当使用SpringMVC框架访问静态资源时,静态资源会被拦截,需要添加额外配置。今天我们就这个问题来讨论一下。 【 SSM中的配置 】 其实在搭建SSM环境时,可以通过 <mvc:resources /> 节点来配置不拦截静态资源,代码如下: < mvc: resources mapping = " /js/** " location = " /js/ " /> < mvc: resources mapping = " /css/** " location = " /css/ " /> < mvc: resources mapping = " /html/** " location = " /html/ " /> 这是一种Ant风格的路径匹配符, /** 表示可以匹配任意层级的路径,所以上面的代码可以简化为: < mvc: resources mapping = " /** " location = " / " /> 上面这种配置是通过xml文件实现的,而且通俗易懂,其实在Java中也可以通过Java代码实现,如果通过Java代码实现,可以自定义一个类,并且让其集成 WebMvcConfigurationSupport 即可,代码如下: @Configuration @ComponentScan ( basePackages =

常见日志框架介绍及Spring日志框架优先级源码解析

微笑、不失礼 提交于 2020-02-19 00:21:50
在Java项目开发中,日志是必不可少的功能,日志对于快速定位问题,检查日常项目运行状态等有非常重要的作用,但是目前Java日志存在多种框架,如:Slf4j、JUL、JCL、Log4j、Log4j2、Logback等。 1. 常用日志框架 框架 简介 Slf4j 日志门面组件 JCL Commons Logging,简称jcl,Apache基金会项目,日志门面组件 Log4j Apache基金会项目,日志实现框架 Log4j 2 是Log4j的升级产品,但是与Log4j不兼容 Logback 日志实现框架 JUL java官方的日志实现框架 Java中可用的日志框架有很多,这样就导致一个选择困难问题,到底应该用哪一个框架,如果项目修改日志组件或者升级又该如何做。其实一般都会选择使用外观模式:日志门面组件+桥接器+日志实现框架,这样即使项目更换日志种类,只需更换桥接器和日志实现框架,也就是只更换Jar包就可以了,代码无需做任何改动。下图表示了日志门面组件、桥接器、日志时间框架之间的关系: 图上列举出了多种日志实现框架转换成Slf4j接口和Slf4j接口绑定多种日志实现框架所涉及到的相关Jar包。通过这些桥接包,我们可以轻松实现项目中日志框架的统一。对于哪些包需要引入/哪些包需要排除也就一目了然了。 2.SLF4J 简介 SLF4J 是一个简单易用的日志门面组件

spring ioc 源码解析

∥☆過路亽.° 提交于 2020-02-18 15:25:09
Spring IOC的初始化流程 1、项目从 ApplicationContext app = new ClassPathXmlApplicationContext(“applicationContext.xml”); 2、找到工厂实现类【ClassPathXmlApplicationContext】中对应的构造方法,执行ioc容器初始化: 如下: *使用给定的父类创建一个新的ClassPathXmlApplicationContext, 从给定的XML文件中加载定义。 * @param configLocations资源位置数组 是否自动刷新上下文, 加载所有bean定义并创建所有的单例。 *或者,在进一步配置上下文之后手动调用refresh。 * @param父上下文 如果上下文创建失败,@抛出BeansException * @see # refresh () <ignore_js_op> 3、找到工厂抽象父类【AbstractApplicationContext】中的【refresh】方法: 3.1.该方法实现解析xml配置文件内容,封装成BeanDefinition对象,注册到BeanFactory中 3.2.该方法实现一些基础组件的注册:bean后置处理器组件、监听器组件、国际化资源组件 3.3.该方法实现bean对象的真正实例化。细节:初始化全部【singleton

Spring入门&注入方式

本秂侑毒 提交于 2020-02-18 15:15:28
Spring 入门 Spring 依赖注入:给类里的属性设置值 Setter 方法和构造方法:都是属性设置值 实现依赖注入的方式:设置注入,构造注入,自动注入 Spring 官网: Spring.io Spring 是一种通过 JavaBean 配置应用程序的方法,我们不需要 new 关键词来调用,在配置文件中配置 JavaBean 。 Spring 框架:目的简化开发流程 Spring 框架: IOC (控制翻转), Di (依赖注入) AOP (面向切面编程)声明式事务 具体描述 Spring: 轻量级: Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 依赖注入 (DI --- dependency injection 、 IOC) 面向切面编程 (AOP --- aspect oriented programming) 容器 : Spring 是一个容器 , 因为它包含并且管理应用对象的生命周期 框架 : Spring 实现了使用简单的组件配置组合成一个复杂的应用 . 在 Spring 中可以使用 XML 和 Java 注解组合这些对象 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的

spring、spring mvc以及IOC的阅读

懵懂的女人 提交于 2020-02-18 08:23:23
spring vs spring-mvc spring是应用级框架 spring mvc只是一个mvc框架 spring现在包含很多子模块,我们用的最多的是依赖注入。 spring模块可分为以下: Core Container: Data Access/Integration: Web: 其他,如AOP、Aspects、Test等: spring模块框架如下: 使用Spring框架的优点 像开发POJO类一样去开发企业应用程序 模块化管理 集成多种技术如ORM、logging、Quartz、JDK timers等 方便测试 使用Spring框架的缺点 第一、软件系统中由于引入了第三方IOC容器,生成对象的步骤变得有些复杂,本来是两者之间的事情,又凭空多出一道- 手续,所以,我们在刚开始使用IOC框架的时候,会感觉系统变得不太直观。 第二、由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。如果你要追求运行效率的话,就必须对此进行权衡,如WEB2.0。 第三、具体到IOC框架产品(比如:Spring)来讲,需要进行大量的配制工作,比较繁琐,对于一些小的项目而言,客观上也可能加大一些工作成本 第四、IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。 Spring IoC 1.两种容器: Spring

IOC和DI 控制反转和依赖注入

此生再无相见时 提交于 2020-02-18 08:20:30
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么   Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。   ●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。  

1 Spring Cloud Eureka服务治理(上)

烈酒焚心 提交于 2020-02-18 01:54:45
注:此随笔为读书笔记。《Spring Cloud微服务实战》,想学习Spring Cloud的同伴们可以去看看此书,里面对源码有详细的解读。 什么是微服务?   微服务是将一个原本独立的系统拆分成若干个小型服务(一般按照功能模块拆分),这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。每个微服务维护自身的数据存储、业务开发、自动化测试案例以及独立部署机制。维护自身的数据存储称为数据管理的去中心化。由于数据管理的去中心化,各个微服务的数据一致性成为一个难题,因此,需要强调的是各个服务之间进行无“事务”的调用。   微服务架构中针对不同应用场景和出现的各种问题出现了各种解决方案和开源框架。服务治理:阿里的Dubbo、当当网扩展的Dubbox、Netflix的Eureka、Apache的Consul等;分布式配置管理:百度的Disconf、Spring cloud的Config、淘宝的Diamond等;批量任务:当当网的Elastic-Job、Spring Cloud的Task等;服务跟踪:京东的Hydra、Spring Cloud的Sleuth等;等等。   Spring Cloud不只是解决微服务中的某一个问题,而是一个解决微服务架构实施的综合性解决框架,它整合了诸多被广泛实践和证明过的框架作为实施的基础部件