【Learning Spring 5.0】001 Spring架构及Spring介绍

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

1. 扩展性问题

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

2. 消除模板代码

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

3. 减少try catch

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

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

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

扫描二维码关注公众号,回复: 6971143 查看本文章

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/beans    http://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();
}

猜你喜欢

转载自www.cnblogs.com/dayAndnight2019/p/11313271.html
今日推荐