关于java Spring相关的基本概念

第一部分 Spring 的核心

1.Spring为简化java开发采取的四种关键策略:

第一,基于POJO的轻量级和最小侵入性编程;
第二,通过依赖注入和面向接口实现松耦合;
第三,基于切面和惯例进行声明式编程;
第四,通过切面和模板减少样板式代码。
(一些流行的重量级框架如EJB2、Struts、WebWork和Tapestry等,都存在问题:强迫开发者编写大量冗余代码、应用于框架绑定,并且通常难以编写测试代码。)

2.Spring中依赖注入的具体实现方式主要有三种:

第一,接口注入(Type 1 IoC);
第二,setter注入(Type 2 IoC);
a.Spring中使用**<property元素**配置Bean的属性时,就是通过调用属性的setter方法来注入值的。
第三,构造器注入(Type 3 IoC)。
(依赖注入让相互协作的软件组件保持松散耦合,而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件。)

3.Spring中AOP确保POJO保持简单的实现方式:

利用AOP,可以使用各种功能层去包裹核心业务层,使得遍布系统的关注点覆盖在它们所影响的组件之上,促使应用组件只需关注它们的核心业务功能。

4.Spring 容器的类型:

第一,BeanFactory;
第二,ApplicationContext;
(ClassPathXmlApplicationContext—从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当作类资源;FileSystemXmlApplicationContext—读取文件系统下的XML配置文件并加载上下文定义;XmlWebApplicationContext—读取Web应用下的XML配置文件并装载上下文定义。)
加载应用上下文的方法如下:
ApplicationContext context=new FileSystemXmlApplicationContext(“c:/foo.xml”);
ApplicationContext context=new ClassPathXmlApplicationContext(“foo.xml”);

5.Spring 框架的组成模块:

第一,核心Spring容器;
(负责Spring应用中的Bean的创建、配置和惯例。代表有:Bean工厂和应用上下文。)
第二,Spring的AOP模块;
第三,数据访问与集成;
第四,Web和远程调用;
第五,测试。

6.Spring容器的两种配置Bean的方式:

第一,基于XML文件配置方式;
a.按需实例化:在构造Bean的时候,可以使用 <constructor-arg 元素来告诉Spring额外的信息:value属性为简单类型构造参数赋值,ref属性为Bean类型构造参数赋值。factory-method属性Scope属性声明Bean的作用域。
b.init-methoddestroy-method参数为配置Bean的初始化和销毁操作。另一种方式是让Bean实现Spring的InitializingBean和DisposableBean接口,好处是能够自检实现这些接口的Bean,无需额外配置,缺点是Bean与Spring的API产生了耦合。默认的default-init-methoddefault-destory-method属性可以在beans中配置。同理,默认自动装配也是在beans中配置。
c.内部Bean,是通过直接声明一个**<bean元素**作为<property元素的子节点而定义的。内部Bean没有ID属性,缺点是不能被复用。
d.Spring提供4种集合装配:list—装配list类型的值,允许重复;set—装配set类型的值,不允许重复;map—装配map类型的值,名称和值可以是任意类型;props—装配properties类型的值,名称和值必须都是String类型。
第二,基于java注解的配置方式;

7.Spring中减少XML配置的方式:

第一,自动装配(autowiring);
(4种自动装配策略:byName,byType,constructor和autodetect。3种注解装配方式:Autowired注解;Inject注解;Resource注解。)
第二,自动检测(autodiscovery)。
第三,使用Spring基于java的配置。

8.面向切面编程(AOP)的基本概念:

第一,AOP术语,
a.通知(advice)—定义了切面是什么以及何时使用;切点(pointcut)—定义了“何处”;连接点(join point)—在应用执行过程中能够插入切面的一个点;
b.切面(aspect)—通知和切点的结合;
c.引入(introduction)—有助于切面为Spring Bean添加新方法。织入(weaving)。
第二,Spring对AOP的支持,
a.Spring提供4种AOP支持:基于代理的AOP支持;@AspectJ注解驱动的切面;纯POJO切面;注入式AspectJ切面(适合Spring各版本)。
第三,Spring框架的一些关键点,
a.Spring通知是Java编写的;
b.Spring在运行期通知对象;
c.Spring只支持方法连接点。

9.切点编写和切面声明的一些基本概念:

第一,Spring AOP所支持的AspectJ切点指示器,
a.execution()—用于匹配是连接点的执行方法;
b.within()—限制连接点匹配制定的类型;
c.(Spring中的)bean()—在切点表达式中使用Bean的ID来标识Bean。
第二,在XML中声明切面,
a.AOP配置元素:
1)<aop:config—顶层的AOP配置元素。大多数的<aop:*元素必须包含在此元素内。
2)<aop:aspect—定义切面。
3)<aop:pointcut—定义切点。
4)<aop:before—定义AOP前置通知。
5)<aop:after—定义AOP后置通知(不管被通知的方法是否执行成功)。
6)<aop:after-returning—定义AOP after-returning通知。
7)<aop:after-throwing—定义AOP after-throwing通知。
8)<aop:around—定义AOP环绕通知。
9)<aop:declare-parents—为被通知的对象引入额外的接口,并透明地实现。
第三,注解切面,
a.@AspectJ相关注解:
1)@Pointcut注解—用于定义一个可以在@AspectJ切面内可重用的切点。
2)@Before注解—标识前置通知方法。
3)@AfterReturning注解—标识后置通知方法。
4)@AfterThrowing注解—标识异常通知方法。
b.<aop:config元素和@AspectJ注解的比较
1)相同点:都是把一个POJO转变成一个切面的有效方式。
2)<aop:config元素相对于@AspectJ注解的优势:不需要实现切面功能的源码。
3)@AspectJ注解相对于<aop:config元素的优势:不需要再XML配置中声明切点和通知。
第四,注入AspectJ切面,

(注意:当Spring AOP不能满足需求时,必须转向更为强大的AspectJ。)

第二部分 Spring 应用程序的核心组件

1.Spring 的数据持久化

1)Spring支持的数据访问框架:JDBC、iBATIS以及Hibernate。
2)Spring提供贯穿整个DAO(data access object 数据访问对象)框架的统一异常体系,实现了将数据访问层与应用程序的其他部分隔离。
3)Spring 的平台无关持久化异常:异常都继承自DataAccessException(非检查型异常)。

2.配置数据源

1)使用JNDI数据源。
2)使用数据源连接池。
3)基于JDBC驱动的数据源。

3.在Spring中使用JDBC

1)使用传统JDBC提供的直接操作数据库的API,会在管理数据库资源和处理异常时产生大量冗余代码。
2)使用JDBC模板,其中SimpleJdbcTemplate最重要。

4.在Spring中集成Hibernate

1)对象/关系映射(Object-Relational Mapping,ORM)框架,不仅提供基本的对象关系映射,还提供作为ORM所具有的所有复杂功能,比如缓存、延迟加载、预先抓取以及分布式缓存。
2)Spring对ORM框架的支持包括:
a.Spring声明式事物的集成支持。
b.透明的异常处理。
c.线程安全的、轻量级的模板类。
d.DAO支持类。
f.资源管理。
3)HibernateTemplate的职责之一是管理Hibernate的Session,不足之处在于存在一定程度的侵入性。上下文Session是Hibernate本身所提供的保证每个事物使用同一Session的方案,已成为使用Hibernate的最佳实践。
4)声明Hibernate的Session工厂,
a.通过XML文件配置:在Spring中配置LocalSessionFactoryBean。
b.通过注解配置:在Spring中配置AnnotationSessionFactoryBean。
5)构建不依赖于Spring的Hibernate代码,
a.@AutoWired注解:自动注入。
b.@Repository注解:简化配置,可用于捕获平台相关异常。

5.事务管理

1)描述事务的ACID,
a.原子性(Atomic):确保事务中所有操作全发生或全不发生。
b.一致性(Consistent):保证业务处于一致的状态,避免数据损坏。
c.隔离性(Isolated):避免同步读写数据。
d.持久性(Durable):事务结果应该持久化。
2)Spring对事务管理的支持,
a.Spring提供对编码式的事务管理支持。
b.Spring提供对声明式的事务管理支持。
3)选择事务管理器
a.JDBC事务。DataSourceTransactionManager。
b.Hibernate事务。HibernateTransactionManager。
c.java持久化API事务。JpaTransactionManager。
4)声明式事务,
a.Spring对声明式事务的支持是通过使用Spring AOP框架实现的。
b.重点关注tx命名空间和以注解为主的声明式事务。
c.事务属性:传播行为、隔离级别、只读提示、事务超时以及回滚规则。
d.在XML中定义事务。
e.定义注解驱动的事务。

参考:
《Spring in action》《深入解析Spring》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值