本部门先对spring做简朴先容,然后先容mockito和powermock在spring测试中的应用。
此部门需要筹备的软件:
基于JDK 7或以上版本
Eclipse http://www.oracle.com/technetwork/java/javase/downloads/index.html
Mockito http://mockito.org/
Spring http://maven.springframework.org/release/org/springframework/spring/
Spring简介
Spring是Java的开源企业应用措施开拓框架,它为 Java beans节制容器的翻转。最初由Rod Johnson在2003年6月基于Apache2.0许可证宣布。
Spring框架处理惩罚底层,使我们可以或许专注于应用措施逻辑。 Spring可以或许从POJOs(Plain Old Java Objects)非侵入式的构建应用措施。好比:
•不需要处理惩罚servlet或servlet API,Java要领可以处理惩罚HTTP POST / GET请求。
•不需要处理惩罚web处事API,Java要领可提供RESTful Web处事
•不需要处理惩罚事务API,Java要领可以执行数据库事务
•不需要处理惩罚长途API,软件开发,当地Java要领利用RPC(remote procedure call)
•不需要处理惩罚JMS API,Java要领可以利用和处理惩罚动静
•不需要处理惩罚JMX API,Java要领可以作为打点扩展
Spring的特性:
•开源应用措施框架
•企业轻量级应用框架
•非侵入性(基于POJO)
•模块化
•可扩展用于其他框架
•Java企业应用措施的事实尺度
优势:
•利用POJO、轻,非入侵
•通过依赖注入和接口定向实现松耦合
•通过aspect和配合约定实现声明式编程
•通过aspect和模板淘汰代码
Spring Framework的焦点容器:
• Core and Beans:提供IOC(Inversion of control)和DI(dependency injection)
• Context:雷同JNDI(Java Naming and Directory Interface,Java定名和目次接口),用于在框架中会见工具。
• 暗示语言(Expression Language):SpEL,用于查询和修改工具图并评估数学表达式。
AOP模块
AOP是Spring面向方面编程的实现。它解耦业务逻辑和日志、安详等基本代码。
instrumentation模块
提供instrumentation类支持,通过MBean展示容器资源和辅佐JMX打点。
动静模块
包括Spring Integration项目标要害抽象如Message、MessageChannel和的MessageHandler。
数据会见模块
•JDBC:JDBC抽象层
•ORM:为风行的工具干系映射提供集成层API,包罗JPA,JDO,Hibernate和iBATIS
•OXM:工具/ XML映射抽象层,实现了JAXB,Castor,XMLBeans的,JiBX和Xstream
•JMS:出产和消费动静
•事务:它支持programmatic和programmatic事务打点
web层
该网络层包罗web,webmvc / servlet中,WebSocket和webmvc-portlet模块:
•Web:文件上传等基本组件。
•Webmvc:
•Portlet
•WebSocket
Spring项目涉及安详设置、Web应用措施、大数据、LDAP等。 Spring框架是个中一部门。
JNDI(Java Naming and Directory Interface,Java定名和目次接口)
Java相关的一些博客:
http://www.gualtierotesta.it/
IoC(Inversion of Control)和DI(dependency injection)常常不区分利用。IoC由IoC实现。
两种范例的依赖注入:
• Constructor injection
• Setter injection
好比界说:
<bean id="bookLister" class="com.packt.di.BookLister"> <constructor-arg ref="bookService"/> </bean> <bean id="bookService" class="com.packt.di.BookServiceImpl" />
等同于:
BookService service = new BookServiceImpl(); BookLister bookLister = new BookLister(service);
<bean id="bookListerSetterInjection" class="com.packt.di.BookLister"> <property name="bookService" ref="bookService" /> </bean> <bean id="bookService" class="com.packt.di.BookServiceImpl" />
等同于:
BookService service = new BookServiceImpl(); BookLister bookLister = new BookLister(); bookLister.setBookService(service);
Spring IoC container 即ApplicationContext。打点的容器叫bean,好比bookService就是bean,即Spring IoC container打点的工具。
bean的属性有:
class、name(即id)、scope、constructor-arg、properties、lazy-init(利用时才建设容器)、init-method 、destroy-method。
scope的取值有:
生命周期:
第一个实例
前提: Maven和STS安装OK,都可以从Eclipse 市场安装。
新建Spring Starter Project项目,
Name:SpringOverview 注明名字前后不要有空格。
Type:Maven
其他用默认设置。