【Spring解决的问题有哪些?】

1. 扩展性问题

传统的应用开发,为了提高代码的重用性,很多代码耦合性较大,对于用户量持续增长,访问量持续增加的网络应用来说,扩展应用就显得非常麻烦。Spring为我们解决了这个问题。

2. 消除模板代码

JDBC数据访问的时候,数据库的连接,注册,释放都是重复的工作。Spring帮我们消除这样的模板代码。

3. 减少try catch

很多资源释放,异常捕获是预判问题的方式,Spring帮我们解决了此类问题。

4. 不可避免的非功能性代码

事务管理,安全检查,站点负载等问题都是需要考虑但是与业务逻辑不太相关的问题,Spring试着帮我们解决了此类问题。

5. 单元测试

代码之间的耦合和依赖关系让单元测试变得复杂困难,Spring帮我们解决了。

【Spring解决上述问题的方法和工具?】

1. POJO类

对于非侵入性的POJO类是最好不过了。对于框架不需要接口或类的依赖,侵入性低,便于测试和使用。

2.依赖注入DI

通过接口解耦是一种常用的手段,Spring为我们统一管理Bean,为依赖注入提供便利,为解耦提供了可能。

3. 声明式编程

我们只是说明要做什么,但不具体指出怎么去做,xml和注解让声明式编程更为简单地实现。

4. 使用切面编程和模板消除样板代码

5.分层设计

层与层之间不做耦合,做好自己层面的事情,其它层的实现完全可以实现插拔式替换。

【Spring模块】

Core:提供创建Bean和依赖注入的功能。

Beans:是一种工厂模式的设计,统一管理类与对象

Context:提供企业级应用支持,如EJB,JMX,basic Remoting等等。

SpEL:就是一种表达式语言,用于方便地获取、设置值。

JDBC:提供了基于JDBC的数据库连接模板。

ORM:提供对ORM框架的支持

OXM:提供对象到xml的映射支持

JMS:提供异步消息传递的抽象功能

Transaction:事务支持

Web:提供web应用开发的支持

Servlet:提供MVC框架,实现快捷处理web请求与响应的功能。

Web Socket:提供双向通信支持。

AOP:提供切面编程的支持。

Aspects:提供对AspectJ的支持

Instrumentation:为类加载,自定义代码插入提供可能。

Instrumentation Tomcat:提供tomcat支持

Messaging:提供基于STOMP的信息传递。

Test:提供单元测试功能。

Security:提供声明式安全验证

Batch:批量处理模块

Spring integration:提供与其他应用程序的交互,JMS就是其中一种。

Mobile:为手机应用提供支持

LDMP:提供基于模板的开发支持。

.New: 提供对.NET开发支持

【Spring容器】

控制反转:

我们需要对象的时候,让Spring为我们提供,而不是手动去创建(new),这样就减少了依赖关系。

使用BeanFactory(历史版本)

1. 创建项目,导入jar包

2.创建配置文件 beans_classpath.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

3.读取配置获得BeanFactory

BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("beans_classpath.xml"));

或者从文件系统获取:

BeanFactory beanFactory=new XmlBeanFactory(new FileSystemResource("d:\\beans_fileSystem.xml"));

ApplicationContext(现在流行)

1. 创建项目,导入jar包

2. 创建配置文件beans_classpath.xml

3.使用ClassPathXmlApplicationContext加载BeanFactory

try {ApplicationContext context=new ClassPathXmlApplicationContext("beans_classpath.xml");System.out.println("container created successfully");
}
catch (BeansException e) {// TODO Auto-generated catch block
    e.printStackTrace();
}

如果是从多个配置文件读取配置:

try {ApplicationContext context1 = new ClassPathXmlApplicationContext(new String[]{"beans_classpath.xml","beans_classpath1.xml" });
}
catch (BeansException e) {// TODO Auto-generated catch block
    e.printStackTrace();
}

也可以使用FileSystemXmlApplicationContext

try {ApplicationContext context=new FileSystemXmlApplicationContext("d:\\beans_fileSystem.xml");System.out.println("container created successfully");
}
catch (BeansException e) {// TODO Auto-generated catch block
    e.printStackTrace();
}

转载于:https://www.cnblogs.com/dayAndnight2019/p/11313271.html

【Learning Spring 5.0】001 Spring架构及Spring介绍相关推荐

  1. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  2. 一文透析 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  3. Spring Cloud与微服务学习总结(8)——Spring Boot、微服务架构和大数据治理三者之间的故事

    前言 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如 ...

  4. 基于Spring Cloud的微服务架构脚手架实践

    文章目录 1 前言 2 脚手架主要提供哪些功能 3 如何使用该脚手架 3.1 项目统一依赖管理 3.2 集成基础模块功能到自己的项目中 4 基础核心功能模块的使用 4.1 集成缓存管理模块 4.1.1 ...

  5. OAuth2.0学习(2-1)Spring Security OAuth2.0 开发指南

    开发指南:http://www.cnblogs.com/xingxueliao/p/5911292.html Spring OAuth2.0 提供者实现原理: Spring OAuth2.0提供者实际 ...

  6. 小米手机超越苹果,成欧洲第二;马斯克特斯拉内部邮件:痛恨开会,少讲黑话;Spring 6.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  7. 小米手机超越苹果,成欧洲第二;马斯克特斯拉内部邮件:痛恨开会,少讲黑话;Spring 6.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  8. Spring学习总结(32)—— 宣布 Spring Native Beta 版!

    今天,经过一年半的工作,我很高兴地宣布,我们将发布Spring Native的 beta 版本及其在start.spring.io上的可用性! 实际上,这意味着除了 Spring 自推出以来支持的常规 ...

  9. 基于 Spring Cloud 的微服务架构分析

    -     前言    - Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, ...

最新文章

  1. SQL Server系统表sysobjects介绍与使用
  2. 公告:Rover's Official Blog停止更新
  3. 这本空降京东当当新书榜TOP1的“算法小抄”是什么来头?
  4. centos找不到环境变量 -bash: ls: command not found(亲测)
  5. 基于Hi3516A的H265 IPC LIVE555 开发基本原理
  6. sqlserver字符串分割
  7. Qt持久性对象进行序列化
  8. C# 输入选择文件夹
  9. Hibernate 异常:“@OneToOne or @ManyToOne on XXX references an unknown entity: XXX”
  10. POJPower Network (最大流)
  11. 第11章 支撑向量机 SVM 学习笔记 下 SVM思路解决回归问题
  12. 华为应聘进展状态码解析(附加性格测试攻略)
  13. gerrit常见错误与处理
  14. 计算机玩游戏重启,为什么我的电脑玩游戏的时候会不定时的自动重启?
  15. 怎么预防和清除计算机病毒,预防和清除计算机病毒的方法
  16. vue 动态 Prop
  17. 小新pad TB-J606按键无法进入刷机模式,9008端口无法识别,可尝试如下主板短接操作,操作步骤
  18. JAVA spring hessian_Springboot写的Hessian例子
  19. unity3d优化收集摘录
  20. 初探DirectUI

热门文章

  1. Internet设置-连接选项卡-局域网(LAN)设置 某些设置由系统管理员进行管理
  2. inventor应用程序错误---解决方法
  3. windows下wchar_t* 转char*
  4. Oracle 用数据泵导入导出数据
  5. 用命令行非交互改密码
  6. mvc学习-编辑提交需要注意-mvc重点
  7. ==和equals()的区别
  8. [转载zz] Python3 输入和输出之序列化与反序列化
  9. python_104_面向对象总结
  10. Matlab GUI 如何自动缩放