spring框架

项目脚手架 - 《Spring Boot + MyBatis + MyBatis Generator》

☆樱花仙子☆ 提交于 2020-04-01 09:41:13
前言 最近启动了一个新的项目发现,每当一个新项目的启动往往需要从头搭建一个“框架”,其中虽然很多基础代码可以Copy,但也会浪费不少时间。 基于这个情况,我打算在GitHub上创建了一个公开库scaffold用来存放平时常用的脚手架项目。 脚手架仓库地址: https://github.com/majian159/scaffold 规划 实现的脚手架有: Java Spring Boot + MyBatis 规划的脚手架有: Java Spring Boot + JPA Spring Boot + MyBatis Web Ant design Pro antd springboot-mybatis-scaffold 第一波因为项目需求先传了 基于 sb + mybatis 的脚手架,其实我个人更喜欢 sb + jpa + ddd 的脚手架,后续在整理出来。 介绍 这是一个基于 SpringBoot + MyBatis + MyBatis Generator 的脚手架项目。 脚手架默认实现了一个 department RESTful API,用来演示。 脚手架集成内容 Spring Boot Spring Security MyBatis MyBatis Generator PageHelper Swagger-UI 目录结构 scaffold ├── scaffold-api #

Spring Boot实践——AOP实现

随声附和 提交于 2020-04-01 07:56:45
Spring AOP 介绍   AOP的介绍可以查看 Spring Boot实践——AOP实现   与AspectJ的静态代理不同,Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。   Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是 InvocationHandler 接口和 Proxy 类。   如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation Library),是一个代码生成的类库,是利用asm开源包, 可以在运行时动态的生成某个类的子类 。注意,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为 final ,那么它是无法使用CGLIB做动态代理的。   这里有注意的几点如下: 从Spring 3.2以后不再将CGLIB放在项目的classpath下,而是将CGLIB类打包放在spring-core下面的org.springframework中

Spring Boot 入门

浪子不回头ぞ 提交于 2020-03-31 06:11:52
一、Spring Boot 久闻Spring Boot大名,这两天终于得空,学习了一把,发觉Spring Boot确实好用,那Spring Boot到底是什么,又是怎么好用呢? 什么是Spring Boot 目前ssm框架还是比较常用的,其中的ss指的无非就是Spring 和 SpringMVC,我们可以简单的认为 “Spring Boot ≥ Spring + SpringMVC”,没错,用了Spring Boot中涵盖了Spring和SpringMVC等大量常用开发配置,而且Spring Boot的配置极其简单,可以让你不用或者只需要很少的Spring配置就可以让你的项目快速运行起来。 Spring Boot的优缺点 优点 快速构建项目 对主流开发框架的无配置集成 项目可独立运行,无须外部依赖Servlet容器(Spring Boot默认自带了一个Tomcat) 提供运行时的应用监控 极大地提高了开发、部署效率 与云计算的天然集成 缺点 坑有些多, 文档略少 二、快速入门 1、Spring的Java配置方式 上面已经提到了,使用Spring Boot,可以让你不用或者只需要很少的Spring配置就可以让你的项目快速运行起来,说的就是使用代码注解来取代xml配置。其实从Spring3.x开始就已经提供了java配置方式,使用java配置方式可以更好的理解你配置的Bean

spring filter拦截器

南笙酒味 提交于 2020-03-31 00:30:37
实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面。 比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权限控制了。 那么就有3种方法可以解决楼主的问题 1,直接使用filter 2,直接使用webwork的interceptor, 3,将action交给spring管理,使用spring的Aop机制 让用户可以直接访问jsp本来就违反了mvc的本意了 1 直接使用filter web.xml配置 <filter> <filter-name>SecurityServlet</filter-name> <filter-class>com.*.web.servlet.SecurityServlet</filter-class> </filter> <filter-mapping> <filter-name>SecurityServlet</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>SecurityServlet</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>

阿里资深架构推荐:Apache Shiro安全框架详解

六眼飞鱼酱① 提交于 2020-03-30 22:26:33
引言 Apache Shiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应该尽可能掩盖复杂的地方,露出一个干净而直观的API,来简化开发人员在使他们的应用程序安全上的努力。因为很多时候很多人比较喜欢使用Spring提供的Spring Security和Shiro来进行对比,我们也对比一下这个内容。Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。 主页 目录 编码/加密: 与Web集成: 拦截器机制: 会话管理: 缓存机制: 与Spring集成: SSL: 综合实例: OAuth2集成: 多项目集中权限管理及分布式会话: 资料获取方法 点点这个链接免费获取:本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com

Spring框架搭建遇到的问题汇总

风格不统一 提交于 2020-03-30 21:20:18
1、The resource is not on the build path of a Java project   然后把相应的依赖加入构建路径 2、Type mismatch: cannot convert from Class<SpringJUnit4ClassRunner> to Class<? extends Runner>   版本过低,spring不支持junit4.5以下的。 3、No grammar constraints (DTD or XML schema) detected for the document   警告,没关系 4、java.lang.IllegalStateException: Failed to load ApplicationContext ested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans' http://www.springframework.org/schema/context/spring-context-3.0.xsd schema写成了 scheme 5、java.lang.ClassNotFoundException: org.aopalliance

Spring框架中的aop操作之一 及aspectjweaver.jar与aopalliance-1.0.jar下载地址 包含beans 注解context 和aop的约束

旧时模样 提交于 2020-03-30 21:13:16
(aspect oriented programming面向切面编程) 首先在原有的jar包: 需Spring压缩包中的四个核心JAR包 beans 、context、core 和expression 下载地址: https://pan.baidu.com/s/1qXLHzAW 以及日志jar包 commons-logging 和log4j 下载地址: https://pan.baidu.com/s/1mimTW5i 再增加一个 spring-aop-5.0.1.RELEASE.jar (用于注解,在Spring-framework库中包含) 再增加 spring-aspects-5.0.1.RELEASE.jar (在Spring-framework库中包含) aspectjweaver-1.8.12.jar (官方下载地址 http://mvnrepository.com/artifact/org.aspectj/aspectjweaver) spring收购的aspectj的一部分包只关于weaver的 aopalliance-1.0.jar (官方下载地址 http://mvnrepository.com/artifact/aopalliance/aopalliance/1.0) 上边是aop联盟的包 然后在 Spring

二、外部化配置--SpringBoot功能

∥☆過路亽.° 提交于 2020-03-30 18:52:07
一、外部化配置 Spring Boot将你的配置外部化,因此你可以在不同的环境下运行相同的代码。你可以使用 properties 文件, YAML 文件,环境变量,命令行参数在外部配置。使用@Value注解可以直接将属性值注入到bean中,通过Spring的 Environment 抽象访问,或通过 @ConfigurationProperties 绑定到结构化对象。 Spring Boot有多种外部配置方式,优先级如下: 当devtools开启时, $HOME/.config/spring-boot 下devtools的全局设置属性。 测试上的@TestPropertySource注解 测试中的 properties 属性。 在 @SpringBootTest 和测试注释上可用,用于测试应用程序的特定部分。 命令行参数 来自 SPRING_APPLICATION_JSON 的属性(嵌入在环境变量或系统属性中的内联JSON) ServletConfig 的初始参数. ServletContext 初始参数 来自 Java:comp / env 的JNDI属性。 Java系统属性( System.getProperties() ). 操作系统环境变量. RandomValuePropertySource 仅具有 random.* 属性. jar包外部的application-

让Spring不再难懂

帅比萌擦擦* 提交于 2020-03-30 13:44:23
Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是Spring仍然可以和其他的框架无缝整合。 1、Spring特征 Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定。大约有20多个模块。 Spring 3.2.17.RELEASE Spring 4.2.7.RELEASE Spring3与Spring4是有区别的,4.0主要是对Java 8的新函数式语法进行支持,还有加强了对网络各种新技术比如http-streaming, websocket的更好的支持。 一般来说,Spring主要分为7个模块: 1.Spring的7个模块 2.常用模块 3.主要jar包 4.常用注解 5.装配注解比较 6.第三方框架集成 这一节简单介绍了Spring,没涉及到原理的东西。Spring如此博大精深,希望大家好好学习哈。 来源: 51CTO 作者: TurkeyMiami 链接: https://blog.51cto.com/12348890/2296116

SSM框架中IoC、DI与AOP的理解

断了今生、忘了曾经 提交于 2020-03-30 13:06:38
  框架封装了普通项目中程序员需要重复书写的代码和调用过程,就比如说在传统的jsp项目中,我们的controller接收到前端的请求然后程序员就需要去开发Dao层,里面还涉及数据库的连接和存储过程的代码,大部分都是冗余的代码,而有了SSM框架后极大的简化了程序猿在controller以下层的开发,只需要一个service层和mapper层就行了,mapper层用来连接mapper.xml文件的,而直接用mapper.xml做sql语句的开发就行了,而数据库连接的和存储的过程都直接由Mybatis负责了,你只需要负责传递形参和接收返回数据就行了,这样就完成了一次完整的数据库交互! 1.1、IoC是什么   Ioc— Inversion of Control ,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转,哪些方面反转了”,那我们来深入分析一下: ● 谁控制谁,控制什么: 传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么