spring框架

Spring资源访问

旧城冷巷雨未停 提交于 2020-02-13 17:54:37
资源访问接口 由于JDK提供的资源访问类并不能很好的满足底层资源的访问需求,所以Spring设计了一个Resource接口。Spring框架使用Resource装载各种资源,包括配置文件资源、国际化属性文件资源等 Resource具体的实现类图 Resource接口的主要方法 boolean exists():判断资源是否存在 boolean isOpen:判断资源是否打开 URL getURL() :该方法返回底层资源对应的URL File getFile():该方法返回底层对应的一个文件 InputStream getInputStream():该方法返回资源对应的输入流 Resource接口的实现类 WritableResource:可写资源,是Spring 3.1提供的接口,有 三个实现类,即PathResource,FileSystemResource和FileUrlResource,其中PathResource从Spring 5.1.1开始遗弃,更倾向于与使用FileSystemResource。 ByteArraResource:二进制数组表示的资源,二进制数组资源可以在内存中通过程序构造 ClassPathResource:类路径下的资源,资源以相对类路径的方式表示 FileSystemResource:文件系统资源,资源以文件系统路径的方式表示

Spring框架的理解

[亡魂溺海] 提交于 2020-02-13 16:38:37
Spring 是一個开源的IOC和AOP容器框架! 具体描述为: 1.轻量级:Spring是非侵入性-基于Spring开发的应用中的对象可以不依赖API开发 2.依赖注入(DI---------dependency injection,ioc) 3.面向切面编程(AOP-----aspect oriented programming) 4.容器:Spring是一个容器,因为它包含了并且管理了应用对象的生命周期 5.Spring 实现了使用简单的主键配置组合成一个复杂的应用,Spring中可以使用XML和JAVA注解组合这些对 象 6.站式:在IOC和AOP的基础上,可以整合各种第三方框架!                                       Spring 模块图接                             Spring开发需要的JAR包 1.把Jar包加入到工程Classpath commons-logging-1.1.3.jar spring-beans-4.0.0.RELEASE.jar spring-context-4 .0.0.RELEASE.jar spring-core-4 .0.0.RELEASE.jar spring-expression- 4 .0.0.RELEASE.jar Spring的配置文件

Spring MVC源码——Root WebApplicationContext

戏子无情 提交于 2020-02-13 14:34:12
Spring MVC源码——Root WebApplicationContext   打算开始读一些框架的源码,先拿 Spring MVC 练练手,欢迎 点击这里 访问我的源码注释, SpringMVC 官方文档 一开始就给出了这样的两段示例: WebApplicationInitializer示例: public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletCxt) { // Load Spring web application configuration AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext(); ac.register(AppConfig.class); ac.refresh(); // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(ac); ServletRegistration.Dynamic

JavaEE与Spring

只谈情不闲聊 提交于 2020-02-13 10:47:01
JavaEE与Spring 在 Java 社区中,Spring与 Java EE 之争是个永恒的话题。在这场争论中,来自两个阵营的布道师、 架构 师 与铁杆粉丝都在不遗余力地捍卫着本方的尊严,并试图说服对方加入到自己的阵营当中,但结果却是双方都很难说服对方,每一方都有充分的理由表明自己的选择是 正确的。参与到这场争论的有一些架构师,他们负责着平台的选择。那么对于普通开发者来说该如何思考这场旷日持久的Spring与Java EE之争呢? Siva是一位充满激情的Java开发者、开源布道师、知名博主,擅长Java、Struts、 hibernate 、 Spring等各项技术与框架。Siva既使用过Spring,也使用过Java EE,但他既不是Spring的铁杆粉丝,也不是Java EE的忠实追求者。相反,他对于Spring与Java EE有着自己的理解和认识,并且在项目当中会根据具体需求选择适合的技术。近日,Siva 分享 了他对于Spring与Java EE的一些认识和理解,希望能对各位读者起到帮助作用。 业务方面 在很多组织中,技术选择并不完全是由开发者决定的。具体来说,如果你工作在一家大型的企业组织中,那么极有可能会有一个专门的架构师团队负责决定在项目中该使用什么平台、框架与库。除此之外,大型企业在选择技术平台时还会考虑如下几个方面: 平台、语言、框架与库的成熟度 商业支持

Spring框架的AOP编程,最通俗的语言解释,易懂易学

家住魔仙堡 提交于 2020-02-13 08:22:41
第七章:AOP技术 前言: AOP技术是根据动态代理设计模式进行的技术。动态代理技术分jdk动态代理和cglib动态代理 jdk动态代理特点: (1)继承java.lang.reflect.proxy类 (2)实现了真实类实现的接口 (3)真实类和代理类之间的关系是:他们都实现了相同的接口 cglib动态代理特点: 特点: (1)代理类是真实类的子类 注:本片文章主要理解AOP编程,至于动态代理技术不做过多介绍,有需要的话,可以留言,下篇文章可以进行讲解。 7.1:AOP原理概述 AOP:Aspect Oriented Programming,面向切面编程 传统形式,web项目执行流程: 缺点: (1) Bad Smell现象 ,指一些代码逻辑出现了在了不合适的层次。 例如:在service层有数据库的事务处理代码,不合乎规范 改进: AOP 编程: 本质上,属于动态代理设计模式 切面编程: 类似于在链式程序指定流程中,在service层处进行截断,此处的断层成为切面,此处的service处的程序运行为竖向,可以看作service层的强化操作。 概念: (1)Point(切点): 表示要对哪个方法进行增强 (2)Advice(通知): 表示额外增加的功能 (3)Aspect(切面): 就是代理对象,(切面+切点) (4)Weaving(织入): 将通知添加到切点中的操作

Spring

情到浓时终转凉″ 提交于 2020-02-13 08:21:58
一、Spring是什么? Spring是一个开源的轻量级的Java开发框架。 二、Spring有什么作用? 简化应用程序的开发。 三、简化应用程序开发体现在哪些方面? ①IOC容器 Java思想是面向对象的开发,一个应用程序是由一组对象通过相互协作开发出的业务逻辑组成,那么如何管理这些对象,使他们高效地协作呢?抽象工厂、工厂方法设计模式”可以帮我们创建对象,“生成器模式”帮我们处理对象间的依赖关系,不也能完成这些功能吗?可是这些又需要我们创建另一些工厂类、生成器类,我们又要而外管理这些类,增加了我们的负担。所以用另外的方式,如果对象需要的时候,就自动地生成对象,不用再去创建。举个例子:原来我们饿了,就出去吃饭,但是现在有了外卖之后,就可以订餐了,我们可以把我们的需求告诉美团,让他们给我们送饭。这里主导关系发生了变化,原来是我们自己,但是现在是美团。 Spring提出了一种思想:就是由spring来负责控制对象的生命周期和对象间的关系。所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象

Spring入门之Bean的实例化方式

末鹿安然 提交于 2020-02-13 08:14:36
Bean的四种实例化方式(也可以说是三种) bean的实例化方式:   ①.构造器实例化(无参数构造器,与构造器的访问权限无关),最标准,使用最多。   ②.静态工厂方法实例化(了解)   ③.实例工厂方法实例化(了解)   ④.实现FactoryBean接口实例化: 实例工厂变种 :集成其他框架使用:SqlSessionFactoryBean 1、构造器实例化 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("App.xml") //不写名字默认为App-context.xml public class App { @Autowired private ApplicationContext context; @Test public void testOld(){ Teacher teacher1 = new Teacher(); Teacher teacher2 = new Teacher(); System.out.println(teacher1); System.out.println(teacher2); } @Test public void testSpring(){ //用来检验scope是singleton或prototype的不同 Teacher teacher1 = context

spring的Bean注入和P标签使用

半腔热情 提交于 2020-02-13 08:14:05
1.构造方法参数 对应 配置文件 <constructor-arg> 元素 可以index|name|type 三选一 、三选二 ; ref|value 二选一 2. setter方法注入(开发推荐) 为需要注入属性提供setter方法 配置 每个注入属性, 对应<property> 元素 3. p名称空间的使用 spring2.5以后,为了简化setter方法属性注入,引用p名称空间的概念,可以将<property> 子元素,简化为<bean>元素属性配置 !! a. 在applicationContext.xml 引入p 名称空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> b. 简化注入的配置 4. 集合类型的属性注入(了解) Spring

Spring中的AOP(1)

时光毁灭记忆、已成空白 提交于 2020-02-13 03:18:09
Spring中的AOP 1.什么是AOP AOP:全称是 Aspect Oriented Programming 即:面向切面编程。 百度百科解释:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过 预编译方式 和 运行期间动态代理 实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。 2.AOP的优势是什么 作用 :在程序运行期间,不修改源码对已有方法进行增强。 优势 : 减少重复代码 提高开发效率 维护方便 3.Spring中的细节 如何使用AOP 我们学习 Spring 的 aop,就是通过配置的方式。 AOP的相关术语 Joinpoint(连接点) :所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为spring 只支持方法类型的连接点。 什么叫连接点,简单来说,就是接口中所有方法都是连接点 //业务层里的所有接口都是连接点

Javaweb——Spring Boot 系列(15)与非关系型数据库交互

折月煮酒 提交于 2020-02-13 02:18:58
与非关系型数据库交互 一、非关系型数据库 1、MongoDB 2、Redis 二、Spring Boot 对 MongoDB 和 Redis 的支持 1、对 MongoDB 的支持 2、对 Redis 的支持 三、MongoDB 项目测试 1、数据库准备 2、新建项目 3、准备领域模型 4、数据访问接口和视图层控制器 5、运行测试 四、Redis 项目测试 1、数据库准备 2、新建项目 3、领域模型 4、Repository 5、自定义 Serializer 6、Controller 7、测试运行 一、非关系型数据库 目前的数据库都可分为关系型数据库和非关系型数据库,前者严格按照关系数学对数据库进行设计和实现,后者则不是如此。 对不使用关系作为数据管理的数据库管理系统都可以统称为 NoSQL,典型特征就是不使用 SQL 语句作为查询语言,数据存储也不是固定的表、字段。 在关系数据库中,不允许表中有表,但是在非关系数据库中则可以有。 NoSQL 数据库根据存储类型的不同可分为:文档存储型,代表有 MongoDB;图形关系存储型,代表有 Neo4j;键值对存储型,代表是 Redis。 考虑到图形比较消耗资源(内存),本文只以 MongoDB 和 Redis 作为后台数据库测试数据交互。 1、MongoDB MongoDB 基于文档存储数据,面向对象的思想,每一条数据记录都是文档的对象。