Spring-notes系统知识
Spring知识点
第一篇:Spring核心技术(IoC,AOP)
1. Spring简介
Spring是一个轻量级的Ioc和AOP容器框架
依赖注入容器,AOP实现(声明式事务),DAO/ORM支持,Web集成
2.a. IoC 反向控制,依赖注入
对象是被动接收依赖类而不是自己主动去找
b. Spring配置:
b1.添加所需要的架包:
Spring-jar,commons-logging.jar,log4j-1.2.15.jar
如果使用面向切面编程,还需要:aspectjrt.jar和spectjweaver.jar
cglib-nodep-2.1_3.jar
b2.添加Spirng的配置文件到classpath中,applicationContext.xml
b3.两种Spring容器
BeanFactory:Bean工厂,最简单的容器
ApplicationContext:位于org.springframework.context.support包中,Spring应用上下文
建立在BeanFactory基础之上,还提供了文本信息解析工具,载入文件资源的通用方法,还可以向注册为监听器的bean发送事件
简单示例:
ApplicationContext app=new ClasspathXmlApplicationContext("applicationContext.xml");
User user=(User)app.getBean("User");
b4.Spring 配置文件:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC ...>
<beans>
<bean id="userService" class="com.qiujy.service.UserService">
</bean> <bean id="userDao" class="com.qiujy.dao.UserDaoImpl" />
</beans>
b5.注入依赖的常用方式:(详见示例TestSpring.rar)
bb.使用构造方法注入:
bb.使用setter方法注入
b6.自动装配
四种自动装配类型:
byName:查找容器中跟该属性同名的bean标识进行装配。
byType:查找容器中跟该属性同类型的bean进行装配。
constructor:查找容器中类型跟构造方法中的参数类型相同的bean进行装配。
autodetect:先尝试使用constructor方式,再使用byType方式
b7.基于注解的自动装配(详见示例*.rar)
3.AOP 面向切面编程 调用处理
a.jdk动态代理:jdk1.3后提供了一个InvocationHandel动态代理接口,使用这个接口可以让jvm(java virtual machine)调用某个类的方法时动态的为这个方法添加新的功能
b.AOP切面示例:
b1.创建切面
记日志的功能就是一个交叉功能,属于切面的领域。所以,把记日志定义成切面:
public class LogAspect {
private Log log = LogFactory.getLog(this.getClass());
public void start(){ log.info("方法开始了"); }
public void end(){ log.info("方法正常结束了"); }
public void exception(){ log.info("方法执行出异常了"); }
}
切面在Spring配置文件中的配置:
<bean id="logAspectBean" class="com.qiujy.aop.LogAspect" />
<aop:config>
<aop:aspect id="logAspect" ref="logAspectBean">
...
</aop:aspect>
</aop:config>
b2.声明切入点
切入点的主要作用在于选择需要使用通知的方法。
Spring中最常用的两种切入点类型:
正则表达式切入点:根据某种模式来匹配方法签名。
AspectJ切入点:真正的切入点表达式语言。
需要添加aspect库,SPRING_HOME/lib/aspectj/*.jar
*切入点在Spring配置文件中的配置如下:
<bean id="logAspectBean" class="com.qiujy.aop.LogAspect" />
<aop:config>
<aop:aspect id="logAspect" ref="logAspectBean">
<aop:pointcut id="allMethod"
expression="execution(* com.qiujy.service.*.*(..))"/>
...
</aop:aspect>
</aop:config>
b3.应用通知
通知在Spring配置文件中的配置如下:
<bean id="logAspectBean" class="com.qiujy.aop.LogAspect" />
<aop:config>
<aop:aspect id="logAspect" ref="logAspectBean">
<aop:pointcut id="allMethod"
expression="execution(* com.qiujy.service.*.*(..))"/>
<aop:before method="start" pointcut-ref="allMethod"/>
<aop:after-returning method="end" pointcut-ref="allMethod"/>
<aop:after-throwing method="exception" pointcut-ref="allMethod"/> </aop:aspect>
</aop:config>
第二篇:Spring在业务层的应用
1.连接数据源的使用:
a.不带连接池的数据源(在dao层要注入datasource)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///test" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="DaoImp" class="com.cspt.SpringAuto.userdaoimp.UserDaoImp">
<property name="jdbcs" ref="dataSource"></property>
</bean>
b.带连接池的数据源
<!-- 声明一个带连接池的数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"></property>
<property name="jdbcUrl" value="${url}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean>
<!--表示当前的模板使用dataSource的数据源 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="DaoImp" class="com.cspt.SpringAuto.userdaoimp.UserDaoImp">
<property name="jdbcs" ref="jdbcTemplate"></property>
</bean>
c.事务管理:
声明式事务帮助把一个操作从事务规则中分离出来。首选
程序控制事务管理能让你在代码中精确定义事务边界
事务的隔离级别:
1.使用数据库默认的事务隔离级别
2. 它充许另一个事务可以看到这个事务未提交的数据。隔离级别最低。
3. 保证一个事务修改的数据提交后才能被另外一个事务读取。
4. 这种事务隔离级别可以防止脏读,不可重复读。
5.事务被处理为顺序执行。可以防止脏读、不可重复读、幻读。隔离级别最高。
第三篇: Spring在Web层的应用
1在web应用中,需要从WebApplicationContext中获取Spring管理的bean,所以需要对他进行初始化,Spring提供了两种方式
:ContextLoderListener ,ContextLoaderServlet
2在web.xml中的配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<PIXTEL_MMI_EBOOK_2005>8 </PIXTEL_MMI_EBOOK_2005>
浙公网安备 33010602011771号