Spring学习笔记(二)——IOC&AOP

IOC/DI有两种赋值方式:设值注入和构造子注入。在上一篇中我们采用的是设值注入,现在我们来看下构造子注入:

    使用构造子注入需要在JAVA-BEAN中书写带参的构造方法,然后在applicationContext里面配置啥子ConXXXXXXXX哦,忘了,一会练习的时候去点出来。需要注意的是有多个参数在这个标签下就要写多个个property(好象是),如果有参数相同的不同构造方法,为了区别可以在配置的时候给属性加上index属性(好象是)。

    注意下:我们在JAVA代码中获取对象的方式有2种,BeanFactroy和ApplictionContext,其中BeanFactroy采用的是延迟加载,在getBean(“”)的时候才创建对象,而ApplictionContext是继承于BeanFactroy,但是他是创建ApplictionContext时就创建了对象的,不过在配置文件中如没配置,默认为对象是单态的,这时就会在getBean(“”)的时候才创建对象.

 

    AOP,牛B的技术,当在在牛B的我的手上运用就更加的牛B。直接看配置嘛:

    <!-- target,指定对哪个类操作 -->
 <bean id="snoopy" class="com.lovo.bean.Dog">
 </bean>
 
 <!-- advice 指定在执行target类时外部哪个类起作用-->
 <bean id="openMouth" class="com.lovo.advice.DogAdvice">
 </bean>
 
 <!-- interceptor 绑定advice,并指定切入点(目标方法中的哪个方法有效)-->
 <bean id="myInterceptor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  <property name="advice" ref="openMouth"></property>
  <!-- pointCut -->
  <property name="pattern" value="com.lovo.bean.Dog.(bark|bite)"></property> 
 </bean>
 
 <!-- Proxy 绑定拦截器,目标对象等,在外部获得BEAN时直接传该bean的id-->
 <bean id="supersnoopy" class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="interceptorNames">
   <list>
    <value>myInterceptor</value>
   </list>
  </property>
  <property name="target" ref="snoopy"></property>
  <property name="proxyTargetClass" value="true"></property>
 </bean>

同时在JAVA代码中我们需要导入Spring的AOP包,同时写一个类去实现MethodXXXXXAdvice接口,并实现里面的方法,该类就是我们上面配置的interceptor类。

<!-- -->

你可能感兴趣的:(spring,AOP,bean,IOC)