[JAVA] Spring 框架学习总结(一)

Spring 框架算是 Java Web 开发中最热的一个框架了,接下来就来学习一下吧。

什么是 Spring

  • Spring 是一个开源的用于简化采用 Java 语言开发企业级程序的一个分层的框架
  • Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
  • 从大小与开销两方面而言 Spring 都是轻量的
  • 通过控制反转(IoC)的技术达到松耦合的目的
  • 提供了面向切面的编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。
  • 包含并管理 应用对象的配置和生命周期。(容器)
  • 将简单的组建配置、组合成为复杂的应用。(框架)

为什么要使用 Spring

  • 在 Spring 上开发应用简单
  • 在 Spring 上开发应用方便
  • 在 Spring 上开发应用快捷

下图为 Spring 组成,我们重点学习的是 IoC 和 AOP
Spring Framework Runtime

Spring IoC 容器

IoC - Inversion of Control,控制反转。控制权转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。

DI - Dependency Injection,即“依赖注入”是其中一种实现方式。在 IoC 容器运行期间,动态的将某种依赖注入到对象之中。

IoC 是什么

IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了 IoC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

IoC 很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;

IoC 和 DI 浅显易懂的解释

现实生活中,我们也可以用一个不是很贴切的比喻,如下表格。

房屋中介 IoC
找中介 找IoC容器
中介介绍房子 容器返回对象
租房、入住 使用对象

使用注解来构造 IoC 容器

用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册
如:在base-package指明一个包

1
<context:component-scan base-package="com.doity.service"/>

表明com.doity.service包及其子包中,如果某个类的头上带有特定的注解【@Component/@Repository/@Service/@Controller】,就会将这个对象作为Bean注册进Spring容器。

如果有多个包,用逗号隔开。

@Controller

@Controller 对应表现层的 Bean,也就是Action,例如:

1
2
3
4
5
@Controller
@Scope("prototype")
public class UserAction extends BaseAction<User>{
………
}

####@ Service

@Service 对应的是业务层 Bean,例如:

1
2
3
4
@Service("userService")
public class UserServiceImpl implements UserService {
………
}

@Resource

@Resource 默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入

1
2
@Resource
private BookService bookService;

##后记
要总结的内容太多啦,待续。

参考资料