<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd
">
<beans>
<!-- dataSource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>
jdbc:mysql://127.0.0.1:3306/hejie
</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>hejie</value>
</property>
</bean>
<!-- sessionFactory -->
<!--bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- hibernate注释时用的类 AnnotationSessionFactoryBean -->
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<!--property name="mappingResources"-->
<property name="annotatedClasses"> <!-- hibernate注释时用 -->
<list>
<!--<value>com/yeepay/entity/person_xml.xml</value>-->
<value>com.yeepay.entity.Person</value>
<value>com.yeepay.entity.Book</value>
</list>
</property>
</bean>
<!-- template -->
<bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- dao -->
<bean id="personDao" class="com.yeepay.dao.impl.PersonDaoImpl">
<property name="template" ref="template"></property>
</bean>
<!-- biz -->
<!-- 事物 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 拦截器 -->
<bean id="interceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<!-- 自动代理 --> <!-- 缺陷:不能细化到某些对某些-->
<bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Dao</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>interceptor</value>
</list>
</property>
</bean>
</beans>
<!--
遇到的问题:
1.核心jar包:hibernate(hbm)+spring(DriverManagerDataSource)
---spring.jar
---log4j-1.2.11.jar
---dom4j-1.6.1.jar
---commons-logging-1.0.4.jar
---hibernate3.jar
---commons-collections-2.1.1.jar
---cglib-2.1.3.jar
---asm.jar
---antlr-2.7.6.jar
---数据库驱动
2.org.springframework.jdbc.datasource.DriverManagerDataSource与org.apache.commons.dbcp.BasicDataSource 的区别
---区别:
DriverManagerDataSource:在每个连接请求时都新建一个连接。与DBCP的BasicDataSource不同,DriverManagerDataSource提供的连接没有进行池管理。
SingleConnectionDataSource:在每个连接请求时都返回同一个连接。虽然它不同严格意义上的池管理数据源,但我们可以把它看作只有一个连接的池
org.apache.commons.dbcp.BasicDataSource:有连接池的功能,无论是效率还是在资源利用率上都优于DriverManagerDataSource
(commons-dbcp.jar,commons-pool.jar,c3p0-0.9.0.4.jar)
---实例:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
改为:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
注意:用BasicDataSource时,在value标签内值不要有空格或者换行。
包:commons-dbcp.jar, commons-pool.jar
---hibernate的注释与hbm
注释:产生sessionFactory类:org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
映射属性:<property name="annotatedClasses"> hibernate注释时用
<list>
<value>com.yeepay.entity.Person</value>//指到类
<value>com.yeepay.entity.Book</value>
</list>
</property>
hbm:产生sessionFactory类:org.springframework.orm.hibernate3.LocalSessionFactoryBean
映射属性:<property name="annotatedClasses">
<list>
<value>com/yeepay/entity/person_xml.xml</value>
</list>
</property>
3.关于Spring中autowire="byName" /"byType"
如果userDAO设置了autowire="byName" ,假设ServiceImpl有一个属性名为userDAO,Spring就会在配置文件里查找有没有名字为userDAO的bean, 自动为ServiceImpl注入。
如果bean有两个属性,一个想默认注入,一个想自定义,只要设定了autowire,然后显式的声明那个想自定义的,就可以达到要求。这就应了需求,在需要特别配置的时候就提供配置,否则给我一个默认注入。
还可以在根部的<beans>节点写一句default-autovwrie="byName",可以让文件里的所有bean 都默认autowrie。不过有人认为开发期可以这样,但Production Server上不应该使用Autowire。但有人认为那些自定义一次的地方比如TranscationManager应该详细定义,而Dao,Service这种大量重复定义的bean就可以这样做。--------注:bean的id 或者 name都行!
4.对比了5中事务处理方法还是觉得BeanNameAutoProxyCreator最为方便且好理解。不能对某一个类的某些方法做代理。
5.用MethodInterceptor自己写了一个advice切入到其他类中,模仿事务处理。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd
">
<beans default-autowire="byName">
<!-- test class ->
<bean id="mytarget" name="log" class="com.service.LogService"></bean>
<bean id="golog" class="com.service.GoLog" >
//在一个方法中调用mytarget的一个有事务的方法。
</bean>
<!-- 通知 ->
<bean id="myAdvice" class="com.spring.MyAdvice"></bean>//配置这个通知,可以直接配到代理中
<!-- pointCut -> //配成一个切入点,可以和通知一样配到代理中
<bean id="runAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<bean class="com.spring.MyHandler" />
</property>
<property name="patterns">
<list>
<value>.*yestransaction</value>
</list>
</property>
</bean>
<!-- 代理 -> //代理都是其中target拥有所有interceptorNames的的advice。在调用时getBean(“代理id”);
<!--bean id="r" name="proxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>com.service.Log</value>
<value>com.service.Go</value>
</list>
</property>
<property name="target" ref="mytarget"></property>
<property name="interceptorNames">
<list>
<value>runAdvisor</value>
</list>
</property>
</bean->
<!--自动代理->
//多对多,要是想对某些方法得要写advisor。调用用自己的id。
<bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>mytarget</value>
<value>golog</value>解决**** 在golog中定义方法.*yestransaction
</list>
</property>
<property name="interceptorNames">
<list>
<value>runAdvisor</value>
</list>
</property>
</bean>
</beans>
<!-- 设想:有一个target是targets(只要方法命名注意),解决对某些方法 ->解决****
-->
分享到:
相关推荐
在"druid_more"这个目录下,可能包含了配置文件、Druid相关的Java配置类、数据源切换逻辑的代码以及MyBatis的Mapper接口和XML配置文件。开发者可能通过Spring Boot的@ConfigurationProperties来加载不同数据源的配置...
在Spring的XML配置文件中,我们可以创建一个`<aop:config>`元素,并在其内部定义`<aop:advisor>`来创建Advisor。Advisor的`advice-ref`属性用于指定通知bean的ID,`pointcut-ref`属性用于指定切点bean的ID。 2. ...
此外,EhCache 配置也需要在 Spring 配置文件中进行,包括定义缓存的大小、存活时间和过期时间等属性。EhCache 的缓存管理器(CacheManager)可以通过 Spring 的 `CacheManager` bean 进行声明和初始化。 至于为...
- **配置组件**:选择要安装的组件,如数据库服务器、客户端工具等。 - **配置安全更新**:可以设置是否接收Oracle的安全更新。 - **设置口令**:为SYS和SYSTEM等默认管理员账户设置强口令。 - **完成安装**:...
在Spring框架中,配置文件是核心组成部分,它们用于定义bean的定义、依赖关系以及各种配置信息。本篇文章将深入探讨Spring配置文件中的归类,主要包括IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented ...
汽车仿真软件ADVISOR的论文资料-ADVISOR软件的混合仿真方法.pdf ADVISOR混合动力电动汽车仿真系统的二次开发及应用.pdf ADVISOR混合动力电动汽车仿真系统的二次开发及应用.pdf ADVISOR...
总结起来,Spring2.5 + Struts1.3.8 + Hibernate3.0的整合涉及到数据源、SessionFactory、事务管理、Struts配置等多个方面的配置和优化。通过以上步骤,可以有效地降低各层之间的耦合度,提高系统的可扩展性和可维护...
3、 将ADVISOR2002patchforR13目录下的ADVISOR2002patchforR13.m文件拷贝到刚才生成的C盘根目录下的ADVISOR2002文件夹; 4、运行Matlab,将工作目录改为ADVISOR2002,然后在命令行输入advisor,启动程序。
本文旨在深入探讨Spring AOP中的两个核心概念:`Aspect`与`Advisor`的区别,并通过具体的配置示例帮助读者更好地理解和应用这些概念。 #### 二、Aspect的概念解析 1. **定义**: - `Aspect`在Spring AOP中被称为...
通常,我们会创建一个切面类(Aspect),在这个类中定义pointcut和advice,然后在Spring配置文件中声明这个切面,使其生效。例如: ```java @Aspect public class LoggingAspect { @Before("execution(* ...
总结来说,Spring配置文件实现AOP的关键在于理解切点表达式和通知类型,以及如何在XML配置中定义它们之间的关系。这使得我们能够在不修改业务代码的情况下,轻松地添加或调整横切关注点,从而提升代码的灵活性和可...
5. `inactive-aop.xml` - 这个 XML 文件很可能包含了 Spring AOP 的配置,包括 Advisor、Pointcut 和 Advice 的定义。 通过这些类和配置文件,我们可以创建一个完整的 AOP 场景,例如,定义一个名为 `...
总的来说,Spring配置文件是控制和组织Spring应用的重要工具,它涉及到对象的实例化、依赖注入、生命周期管理以及AOP等多个核心概念。理解并熟练掌握这些配置,能帮助开发者更有效地构建和维护Spring应用。
4. **Spring Configuration**:XML或Java配置文件,定义了Spring容器如何实例化和装配对象,包括Advisor和Plugin Manager。 5. **Plugin Classes**:实际的插件实现,每个类对应一个特定的功能,实现了Plugin ...
<description>Spring公共配置文件 <!-- 启用spring注解支持 --> <!-- <!-- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">--> <!-- <!-- value="classpath:hibernate.cfg....
压缩包子文件的文件名称"ADVISOR2002patchforR13.m"可能是一个安装脚本或者补丁应用程序,".m"可能是MATLAB脚本、M文件或者其他类型的可执行文件,用于在用户计算机上应用这个补丁。 关于Advisor 2002和R13版本的...
首先,SQLAdvisor支持多种数据库系统,包括MySQL、Oracle、SQL Server等,这使得它在多样的IT环境中具有广泛的应用潜力。通过深入解析SQL语句,它可以识别出可能影响性能的因素,如不恰当的索引使用、过度复杂的查询...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
对于Struts2,其核心组件Action、Interceptor等与Spring的集成方式类似,主要是通过Spring的依赖注入(DI)和AOP实现控制层与业务层的解耦。在实际项目中,开发者可以根据具体需求调整配置,以实现最佳的框架整合...
Bean定义是Spring配置文件的核心元素,它包括bean的ID、类名、属性值、依赖关系等信息。例如: ```xml <bean id="exampleBean" class="com.example.ExampleClass"> ``` 这里的`id`属性为bean提供了唯一标识,`...