1、spring 的框架图 的理解 ,分3层,第3层是ioc ,依赖注入。第2层是AOP,弥补oop编程的不足。提供面向切面的服务。ioc 和 aop 算是spring的核心基础。第一次,是一些框架。具体分为:数据访问和数据库访问,包括 ORM, OXM,JDBC,JSM ;远程访问:webservice、web 、portlet ;测试
2、spirng ioc 的容器 ,beanforcoty ,applictioncontext,webappliactioncontext,.
beanfactory :其实就是ioc容器,负责依赖类之间的创建、拼接、管理、获取等工作。
context 模块构建在核心模块之上,扩展了beanforty的功能。添加了i18n国际化、bean 生命周期控制、框架事件体系、资源加载透明化等多项功能。此外,该模块提供了许多企业级服务的支持。如邮件服务,任务调度,jndi定位,ejb集成,远程访问等。applictionContext是context模块的核心接口。
3、AOP 是进行横切逻辑编程的思想。spring 整合ASPECTJ这种AOP语言级的框架。在sppring 里实现AOP编程拥有众多选择。JAVA 5 引入,java.lang.instrument,允许在jvm启动时启用一个代理类,通过该代理类在运行期修改类的字节码,改变一个类的功能。实现AOP的功能。
4、spring表达式语言
类似于el表达式,可以在spring的xml配置文件或spring配置的注解中使用。可以在bean 配置时和java实例化对象进行交互,获取动态的特性。比如你可以调用执行某个bean的方法,让方法的返回值作为另一个bean的属性值。
5、spring提供三种ioc配置信息。xml配置方式、注解的配置方式、java类的配置方式。
6、数据访问层新增OXM功能。
第二章 快速入门
在编写dao接口的实现类时,大家也想有个问题:在以上两个dao实现类中都没有打开/释放Conncetion的代码,dao类究竟如何访问数据库呢?我们前面说过,样板式的操作都
被jdbctemplate封装起来了,jdbctemplate本真需要一个datasource,userdao都提供一个带@AutoWired注解的jdbctemplate变量。所有我们的事先申明一个数据源。xml配置内容:
< context:componect-scan base-package="com.baobaotao.dao">
< context:componect-scan base-package="com.baobaotao.service">
<beanid="datasource" class="org.apache.commons.dbcp.BasicDataSource" destory-method="close" p:dirverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3309/sampledb"
p:username="root" p:pssword="1234">
<bean id="jdbctemplate" class="org.springframework.jdbc.core.jdbctemplate">
p:dataSource-ref="dataSource"
</bean>
<bean id="transactionManager"class="org.springframework.jdbc.datasource.datasourceTransactionManager" p:datasource-ref="datasource"/>
<aop:config proxy-target-class="true">
<aop:pointcut id="serviceMethod" expression="execution(*com.baobaotao.service..*(..)*)">
<aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/>
<aop:config>
<tx:adviceid="txAdvice" transaction-manager="transactionManager">
<tx:attributes><tx:method name="*">
</tx:attributes>
<tx:advice>
</bean>
单元测试
junit4和junit3相比有了重大的改进。我们采用junit4进行测试。 通过FILE-New-other ---Java-JUNIT-JUnit TestCase
@RunWith(SpringJUnit4ClassRunner.class)
@ContectConfigruton(loactions={"/applictionContext.xml})
public classTestUserService{
@AutoWired
private UserService userService
@Test
publicvoid hasMatchUser(){}
}
2.5 展现层
spirng mvc框架配置
web.xml
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:appliactioncontext.xml</parm-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.contextloaderLister</listener-class>
</listener>
</web-app>
首先,通过web容器上下文参数指定spring配置文件的地址。多个配置文件可用逗号或空格分隔。,contentloaderlistener 在监听web容器启动时自动运行。
它会根据contextconfiglocation web 容器参数获取配置文件。并启动spring容器。注意要将log4j。propertis日志配置文件放置在类路径下。以便日志引擎自动生效。