Spring实战学习

《Spring实战》第四版
企业级JavaBean(EJB) 规范

第1部分 Spring的核心

Spring可以做很多事情, 它为企业级开发提供给了丰富的功能, 但是这些功能的底层都依赖于它的两个核心特性, 也就是依赖注入(dependency injection, DI) 和面向切面编程(aspect-oriented programming, AOP) 。
1.2

  • Spring容器并不是只有一个。 Spring自带了多个容器实现, 可以归为两种不同的类型。
    1、bean工厂
    2、应用上下文ApplicationContext
  • 虽然我们可以在bean工厂和应用上下文之间任选一种, 但bean工厂对大多数应用来说往往太低级了, 因此, 应用上下文要比bean工厂更受欢迎。 我们会把精力集中在应用上下文的使用上, 不再浪费时间讨论bean工厂。
    1.2.1 使用应用上下文
    Spring自带了多种类型的应用上下文。 下面罗列的几个是你最有可能遇到的。
    AnnotationConfigApplicationContext: 从一个或多个基于Java的配置类中加载Spring应用上文。
    AnnotationConfigWebApplicationContext: 从一个或多个基于Java的配置类中加载Spring Web应用上下文。
    ClassPathXmlApplicationContext: 从类路径下的一个或多个XML配置文件中加载上下文定义, 把应用上下文的定义文件作为类资源。
    FileSystemXmlapplicationcontext: 从文件系统下的一个或多个XML配置文件
    中加载上下文定义。
    XmlWebApplicationContext: 从Web应用下的一个或多个XML配置文件中加载上
    下文定义。
    2.1
    当描述bean如何进行装配时, Spring具有非常大的灵活性, 它提供了三种主要的装配机制:
    1、在XML中进行显式配置。
    2、在Java中进行显式配置。
    3、隐式的bean发现机制和自动装配。
    (推荐使用顺序是:3、2、1)
    Spring的配置风格是可以互相搭配的, 所以你可以选择使用XML装配一些bean, 使用Spring基于Java的配置(JavaConfig) 来装配另一些bean, 而将剩余的bean让Spring去自动发现。
    即便如此, 我的建议是尽可能地使用自动配置的机制。 显式配置越少越好。 当你必须要显式
    配置bean的时候(比如, 有些源码不是由你来维护的, 而当你需要为这些代码配置bean的时
    候) , 我推荐使用类型安全并且比XML更加强大的JavaConfig。 最后, 只有当你想要使用便
    利的XML命名空间, 并且在JavaConfig中没有同样的实现时, 才应该使用XML。

3.4bean 的作用域

Spring定义了多种作用域, 可以基于这些作用域创建bean, 包括:

  • 单例(Singleton) : 在整个应用中, 只创建bean的一个实例。
  • 原型(Prototype) : 每次注入或者通过Spring应用上下文获取的时候, 都会创建一个新
    的bean实例。
  • 会话(Session) : 在Web应用中, 为每个会话创建一个bean实例。
  • 请求(Rquest) : 在Web应用中, 为每个请求创建一个bean实例。
    单例是默认的作用域, 但是正如之前所述, 对于易变的类型, 这并不合适。 如果选择其他的作用域, 要使用@Scope注解, 它可以与@Component或@Bean一起使用。

4.1.1 AOP术语

Spring实战学习_第1张图片
AOP

通知(Advice)
Spring切面可以应用5种类型的通知:
1、 前置通知(Before) : 在目标方法被调用之前调用通知功能;
2、 后置通知(After) : 在目标方法完成之后调用通知, 此时不会关心方法的输出是什么;
3、返回通知(After-returning) : 在目标方法成功执行之后调用通知;
4、 异常通知(After-throwing) : 在目标方法抛出异常后调用通知;
5、 环绕通知(Around) : 通知包裹了被通知的方法, 在被通知的方法调用之前和调用之后执行自定义的行为。

10.2配置数据源

无论选择Spring的哪种数据访问方式, 你都需要配置一个数据源的引用。 Spring提供了在Spring上下文中配置数据源bean的多种方式, 包括:
1、 通过JDBC驱动程序定义的数据源;
2、 通过JNDI查找的数据源;
3、 连接池的数据源。
推荐首选连接池,可能的话JNDI,最后是JDBC。

表述性状态转移(Representational State Transfer, REST)

你可能感兴趣的:(Spring实战学习)