1.1.简化java开发
1.基于POJO的轻量级和最小侵入性编程
Spring 不会在HelloWorldBean 上有任何不合理的要求
package com.test.spring;
public class HelloWorldBean {
public String sayHello(){
return "Hello World";
}
}
2.通过依赖注入DI和面向接口实现松耦合
通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定,对象无需自行
创建或管理它们的依赖关系,依赖关系将被自动注入到需要它们的对象当中去。
如果一个对象只通过接口(而不是具体实现或初始化过程)来表明依赖关系,那么这种依赖就能够在对象本身
毫不知情的情况下,用不同的具体实现进行替换。
3.基于切面AOP和惯例进行声明式编程
DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented programming,AOP)允许你把
遍布应用各处的功能分离出来形成可重用的组件。
诸如日志,事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常被
称为横切关注点,因为它们会跨越系统的多个组件。
AOP能够使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。所造成的结果就是这些组件
会具有更高的内聚性并且会更加关注自身的业务,完全不需要了解涉及系统服务所带来负责性。总之,AOP能够
确保POJO的简单性。
4.通过切面和模板减少样板式代码
通常为了实现通用的和简单的任务,你不得不一遍遍地重复编写这样的代码。
遗憾的是,它们中的很多是因为使用Java API 而导致的样板式代码。样板式代码的一个常见范例是使用JDBC访问数据库查询数据。
注册驱动,获得连接,预编译,执行,获得结果集,关闭连接。
JDBC不是产生样板式代码的唯一场景。在许多编程场景中往往都会导致类似的样板式代码,JMS、JNDI 和使用REST服务通常也涉及大量的重复代码。
Spring 旨在通过模板封装来消除样板式代码。Spring的JdbcTemplate 使得执行数据库操作时,避免传统的JDBC 样板式代码成为了可能。