`
jie2workjava
  • 浏览: 151155 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring的配置文件等advice+advisor+beannameproxy...总结

阅读更多

<?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(只要方法命名注意),解决对某些方法 ->解决****


-->

 

分享到:
评论

相关推荐

    spring boot+mybatis+druid多数据源.zip

    在"druid_more"这个目录下,可能包含了配置文件、Druid相关的Java配置类、数据源切换逻辑的代码以及MyBatis的Mapper接口和XML配置文件。开发者可能通过Spring Boot的@ConfigurationProperties来加载不同数据源的配置...

    使用Spring配置文件实现AOP

    在Spring的XML配置文件中,我们可以创建一个`&lt;aop:config&gt;`元素,并在其内部定义`&lt;aop:advisor&gt;`来创建Advisor。Advisor的`advice-ref`属性用于指定通知bean的ID,`pointcut-ref`属性用于指定切点bean的ID。 2. ...

    Spring AOP+ehCache简单缓存系统解决方案.doc

    此外,EhCache 配置也需要在 Spring 配置文件中进行,包括定义缓存的大小、存活时间和过期时间等属性。EhCache 的缓存管理器(CacheManager)可以通过 Spring 的 `CacheManager` bean 进行声明和初始化。 至于为...

    ORA+11+G+R2+server+64bit+for+windows.rar

    - **配置组件**:选择要安装的组件,如数据库服务器、客户端工具等。 - **配置安全更新**:可以设置是否接收Oracle的安全更新。 - **设置口令**:为SYS和SYSTEM等默认管理员账户设置强口令。 - **完成安装**:...

    spring 配置文件 归类

    在Spring框架中,配置文件是核心组成部分,它们用于定义bean的定义、依赖关系以及各种配置信息。本篇文章将深入探讨Spring配置文件中的归类,主要包括IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented ...

    汽车仿真软件ADVISOR的论文资料-ADVISOR软件的混合仿真方法.pdf

    汽车仿真软件ADVISOR的论文资料-ADVISOR软件的混合仿真方法.pdf ADVISOR混合动力电动汽车仿真系统的二次开发及应用.pdf ADVISOR混合动力电动汽车仿真系统的二次开发及应用.pdf ADVISOR...

    Spring2.5+Struts1.3.8+Hibernate3.0整合

    总结起来,Spring2.5 + Struts1.3.8 + Hibernate3.0的整合涉及到数据源、SessionFactory、事务管理、Struts配置等多个方面的配置和优化。通过以上步骤,可以有效地降低各层之间的耦合度,提高系统的可扩展性和可维护...

    advisor在高版本matlab中使用的补丁:ADVISOR2002patchforR13.m

    3、 将ADVISOR2002patchforR13目录下的ADVISOR2002patchforR13.m文件拷贝到刚才生成的C盘根目录下的ADVISOR2002文件夹; 4、运行Matlab,将工作目录改为ADVISOR2002,然后在命令行输入advisor,启动程序。

    SPRING:aspect和advisor区别

    本文旨在深入探讨Spring AOP中的两个核心概念:`Aspect`与`Advisor`的区别,并通过具体的配置示例帮助读者更好地理解和应用这些概念。 #### 二、Aspect的概念解析 1. **定义**: - `Aspect`在Spring AOP中被称为...

    Spring AOP Example – Pointcut , Advisor

    通常,我们会创建一个切面类(Aspect),在这个类中定义pointcut和advice,然后在Spring配置文件中声明这个切面,使其生效。例如: ```java @Aspect public class LoggingAspect { @Before("execution(* ...

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    总结来说,Spring配置文件实现AOP的关键在于理解切点表达式和通知类型,以及如何在XML配置中定义它们之间的关系。这使得我们能够在不修改业务代码的情况下,轻松地添加或调整横切关注点,从而提升代码的灵活性和可...

    Spring AOP 拦截器 Advisor

    5. `inactive-aop.xml` - 这个 XML 文件很可能包含了 Spring AOP 的配置,包括 Advisor、Pointcut 和 Advice 的定义。 通过这些类和配置文件,我们可以创建一个完整的 AOP 场景,例如,定义一个名为 `...

    Spring配置文件详解1

    总的来说,Spring配置文件是控制和组织Spring应用的重要工具,它涉及到对象的实例化、依赖注入、生命周期管理以及AOP等多个核心概念。理解并熟练掌握这些配置,能帮助开发者更有效地构建和维护Spring应用。

    Spring Advice插件平台开发项目源代码

    4. **Spring Configuration**:XML或Java配置文件,定义了Spring容器如何实例化和装配对象,包括Advisor和Plugin Manager。 5. **Plugin Classes**:实际的插件实现,每个类对应一个特定的功能,实现了Plugin ...

    spring3.2+strut2+hibernate4

    &lt;description&gt;Spring公共配置文件 &lt;!-- 启用spring注解支持 --&gt; &lt;!-- &lt;!-- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt;--&gt; &lt;!-- &lt;!-- value="classpath:hibernate.cfg....

    ADVISOR2002patchforR13.rar_advisor_advisor 2002

    压缩包子文件的文件名称"ADVISOR2002patchforR13.m"可能是一个安装脚本或者补丁应用程序,".m"可能是MATLAB脚本、M文件或者其他类型的可执行文件,用于在用户计算机上应用这个补丁。 关于Advisor 2002和R13版本的...

    SQLAdvisor-2.0.tar.gz

    首先,SQLAdvisor支持多种数据库系统,包括MySQL、Oracle、SQL Server等,这使得它在多样的IT环境中具有广泛的应用潜力。通过深入解析SQL语句,它可以识别出可能影响性能的因素,如不恰当的索引使用、过度复杂的查询...

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    三大框架整合(Spring+Hibernate+Struts1/Struts2)

    对于Struts2,其核心组件Action、Interceptor等与Spring的集成方式类似,主要是通过Spring的依赖注入(DI)和AOP实现控制层与业务层的解耦。在实际项目中,开发者可以根据具体需求调整配置,以实现最佳的框架整合...

    pring配置文件共5页.pdf.zip

    Bean定义是Spring配置文件的核心元素,它包括bean的ID、类名、属性值、依赖关系等信息。例如: ```xml &lt;bean id="exampleBean" class="com.example.ExampleClass"&gt; ``` 这里的`id`属性为bean提供了唯一标识,`...

Global site tag (gtag.js) - Google Analytics