Spring:它是一个轻量级的面向切面和依赖注入的容器框架。
静态导入,在你自己的类中使用静态导入,可以让你使用其它类中定义的类方法和类变量,而且这些类方法和类变量就像在
本地定义的一样。也就是说,静态导入允许您在调用其它类中定义的静态成员时,可以忽略类名。
为什么要使用Spring和使用它有什么好处?
1.它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。
2.Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。
3.它的设计从底部帮助你编写易于测试的代码。
它所提供的一些东西
1.它提供的IOP/DI的机制方便解耦,简化开发
2.它提供的AOP的支持
3.它方便集成各种优秀框架
4.降低Java EE API的使用难度
5.它提供了声明式事务的支持
6.它方便程序的测试
使用它的好处:
1.低侵入式设计,代码污染极低
2.独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
3.Spring的DI机制降低了业务对象替换的复杂性
4.Spring并不完全依赖于Spring的所有框架,开发者可自由选用Spring框架的部分或全部
它缺点是:不支持分布式部署。
Spring中应该注意的知识点:
1.依赖注入:让组件依赖于抽象,当组件要与其他实际对象发生依赖关系时,通过抽象来注入依赖的实际对象。
它有三种方式进行注入:
1.1.设值注入
1.2.接口注入
1.3.构造注入
2.控制反转:调用者不再创建被调用者的实例,由spring框架来实现,故称控制反转。
3.Spring包含的七大部分:
3.1. 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,
它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的
配置和依赖性规范与实际的应用程序代码分开。
3.2.Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。
Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
3.3.Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。
所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于
Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,
不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
3.4.Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库
供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常
代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常
层次结构。
3.5.Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、
Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
3.6.Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。
所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求
以及将请求参数绑定到域对象的工作。
3.7.Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成
为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
4.spring bean的五种作用域:
1、single:当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,
并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。
2、prototype:prototype作用域部署的bean,每一次请求都会产生一个新的bean实例,相当与一个new的操作。
3、request:针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效。
4、session:针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。
5、global session:类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。
5.spring bean 的生命周期:
bean定义 -> bean初始化(init-method) -> bean调用 -> bean销毁
6.什么是Java事务
其实Java事务也是数据库事务,它必需服从ACID原则。
ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。
事务主要是用来解决数据在处理到一半的时候出现异常而导致的不一致性问题。
事务的类型分为:
1.JDBC事务:如果是用JDBC就可以选择JDBC事务连接
2.JAT事务: 如果是用到跨多个数据库就选择JAT事务
3.容器事务:如果用到了EJB,则可以考虑使用EJB容器事务
7.面向切面(方面)编程(安全,日志,事务,权限):针对于某一模块进行专门的编写(如:面向日志编程,面向事务编程等),
其意思就是说面向具体的某个功能模块来编程,然后讲其切入到项目中.
(1):面向切面(方面)编程(安全,日志,事务,权限)
Aop(aspect-oriented programming )
功能权限
菜单权限
数据权限
方法权限
(2):连接点(某个方法的调用)->切入点(方法的集合)->切面(类的集合)-->方面(解决方案的切入点)
(3):处理(Spring的处理)
(4):目标对象(被处理的类)
(5):AOP代理(具体实现):<1>:JDK动态代理(面向接口)默认实现
<2>:Cglib代理(面向具体类)
8.spring处理(通知)
<1>before 实现MethodBeforeAdvice接口
<2>around 实现MethodInterceptor接口
<3>after 实现AfterReturningAdvice接口
<4>exception 实现ThrowsAdvice接口
<5>introduce advice
*引入通知是一种特殊的通知,它能将新的成员变量、成员方法引入到目标类中。
它不能作用于任何切入点,因为它只作用于类层次,而不是方法层次。
实现引入通知需要实现IntroductionAdvisor和IntroductionInterceptor接口。
*引入通知不能调用proceed方法。Advisor必须针对每个实例,并且是有状态的。
*引入通知的效果类似于设计模式中的访问者模式(Visitor Pattern)。
静态导入,在你自己的类中使用静态导入,可以让你使用其它类中定义的类方法和类变量,而且这些类方法和类变量就像在
本地定义的一样。也就是说,静态导入允许您在调用其它类中定义的静态成员时,可以忽略类名。
为什么要使用Spring和使用它有什么好处?
1.它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。
2.Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。
3.它的设计从底部帮助你编写易于测试的代码。
它所提供的一些东西
1.它提供的IOP/DI的机制方便解耦,简化开发
2.它提供的AOP的支持
3.它方便集成各种优秀框架
4.降低Java EE API的使用难度
5.它提供了声明式事务的支持
6.它方便程序的测试
使用它的好处:
1.低侵入式设计,代码污染极低
2.独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
3.Spring的DI机制降低了业务对象替换的复杂性
4.Spring并不完全依赖于Spring的所有框架,开发者可自由选用Spring框架的部分或全部
它缺点是:不支持分布式部署。
Spring中应该注意的知识点:
1.依赖注入:让组件依赖于抽象,当组件要与其他实际对象发生依赖关系时,通过抽象来注入依赖的实际对象。
它有三种方式进行注入:
1.1.设值注入
1.2.接口注入
1.3.构造注入
2.控制反转:调用者不再创建被调用者的实例,由spring框架来实现,故称控制反转。
3.Spring包含的七大部分:
3.1. 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,
它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的
配置和依赖性规范与实际的应用程序代码分开。
3.2.Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。
Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
3.3.Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。
所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于
Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,
不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
3.4.Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库
供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常
代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常
层次结构。
3.5.Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、
Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
3.6.Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。
所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求
以及将请求参数绑定到域对象的工作。
3.7.Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成
为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
4.spring bean的五种作用域:
1、single:当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,
并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。
2、prototype:prototype作用域部署的bean,每一次请求都会产生一个新的bean实例,相当与一个new的操作。
3、request:针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效。
4、session:针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。
5、global session:类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。
5.spring bean 的生命周期:
bean定义 -> bean初始化(init-method) -> bean调用 -> bean销毁
6.什么是Java事务
其实Java事务也是数据库事务,它必需服从ACID原则。
ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。
事务主要是用来解决数据在处理到一半的时候出现异常而导致的不一致性问题。
事务的类型分为:
1.JDBC事务:如果是用JDBC就可以选择JDBC事务连接
2.JAT事务: 如果是用到跨多个数据库就选择JAT事务
3.容器事务:如果用到了EJB,则可以考虑使用EJB容器事务
7.面向切面(方面)编程(安全,日志,事务,权限):针对于某一模块进行专门的编写(如:面向日志编程,面向事务编程等),
其意思就是说面向具体的某个功能模块来编程,然后讲其切入到项目中.
(1):面向切面(方面)编程(安全,日志,事务,权限)
Aop(aspect-oriented programming )
功能权限
菜单权限
数据权限
方法权限
(2):连接点(某个方法的调用)->切入点(方法的集合)->切面(类的集合)-->方面(解决方案的切入点)
(3):处理(Spring的处理)
(4):目标对象(被处理的类)
(5):AOP代理(具体实现):<1>:JDK动态代理(面向接口)默认实现
<2>:Cglib代理(面向具体类)
8.spring处理(通知)
<1>before 实现MethodBeforeAdvice接口
<2>around 实现MethodInterceptor接口
<3>after 实现AfterReturningAdvice接口
<4>exception 实现ThrowsAdvice接口
<5>introduce advice
*引入通知是一种特殊的通知,它能将新的成员变量、成员方法引入到目标类中。
它不能作用于任何切入点,因为它只作用于类层次,而不是方法层次。
实现引入通知需要实现IntroductionAdvisor和IntroductionInterceptor接口。
*引入通知不能调用proceed方法。Advisor必须针对每个实例,并且是有状态的。
*引入通知的效果类似于设计模式中的访问者模式(Visitor Pattern)。