《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术语
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)
网友评论