继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring(一):概览

0xcaffebabe
关注TA
已关注
手记 43
粉丝 10
获赞 21

设计关键策略

  • 基于POJO和最小侵入性编程

  • 通过依赖和面向接口实现松耦合

  • 基于切面和惯例进行声明式编程

  • 通过切面和模板减少样板代码

Spring通过依赖注入,应用切面以及各种模板来简化JAVA开发

起步

  • 引入依赖

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>5.2.0.RELEASE</version>

</dependency>

模块概览

Spring分为若干个模块,如下图所示

Spring模块

  • Test:为测试提供支持

  • Core Container:提供了Spring最核心的IOC功能,AOP、Aspects等都是基于此实现的

  • Web:提供了web开发的相关能力

  • Data Access:提供数据访问的功能

核心

Spring的核心是DI(依赖注入)与AOP(面向切面编程)

  • DI(Dependency Injection)是一种实现IOC(nversion of Control)的方式,通过控制反转,可以有效降低代码之间的耦合,把对象的控制交给外部容器

容器与配置

既然Spring是管理对象的一个容器,我们首先就需要创建一个容器出来,在开发当中,这个容器被称为上下文(Context),这些上下文都实现了一个叫做ApplicationContext的接口,其中常用的实现类如下:

  • AnnotationConfigApplicationContext

  • AnnotationConfigWebApplicationContext

  • ClassPathXmlApplicationContext

  • FileSystemXmlApplicationContext

  • XmlWebApplicationContext

同时,这个ApplicationContext接口最终的根接口是BeanFactory,这个接口提供了容器的基本功能,可以看做是容器的基本规范,但时功能肯定没有ApplicationContext多,下表是两者的比较。

特性| BeanFactory| ApplicationContext

-|-|-

Bean instantiation/wiring|Yes|Yes

Integrated lifecycle management|No|Yes

Automatic BeanPostProcessor registration|No|Yes

Automatic BeanFactoryPostProcessor registration|No|Yes

Convenient MessageSource access (for internalization)|No|Yes

Built-in ApplicationEvent publication mechanism|No|Yes

由此可见,ApplicationContext是青出于蓝而胜于蓝,同时还有最重要的一点,ApplicationContext中的Bean是延迟加载,而BeanFactory则是立即加载。

既然要创建容器,那必然少不了相关配置信息,只有向Spring提供这些信息,Spring才能为你管理对象。

配置的方式有三种:

  • XML配置

  • JAVA注解配置

  • JAVA代码配置

在Spring的早期版本,Spring只能通过XML配置,这造成了Spring配置起来及其繁琐,间接地成了XML的代名词。但之后,Spring引入了注解配置,使配置过程简化,但有些方面,使用XML配置比注解配置更高效,比如事务方面的配置,在本系列文章中,我们将不再使用XML配置的方式,而是使用注解配置与代码配置。

第一个Spring程序


// Main.java

// 创建一个使用注解配置的容器,配置源选择Config这个类

AnnotationConfigApplicationContext  context = new  AnnotationConfigApplicationContext(Config.class);

  

//从容器当中获取一个类型为Pojo的对象

context.getBean(Pojo.class).run();

至于配置的详情,我们将留到下一篇文章深入探讨,这里不详细说明


// Config.java

@Configuration

public  class  Config {

@Bean

public  Pojo  pojo(){

return  new  Pojo();

}

}

  

class  Pojo {

public  void  run(){

System.out.println("go");

}

}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP