Spring IOC和AOP 基础

1 spring中注入资源是通过描述来实现的,在 spring 中是通过注解或者 XML 描述。spring 中IOC 注入方式有三种

1)构造方法注入

2)setter 注入

3)接口注入

1.1)构造注入主要是依靠类的构造方法进行注入。比如角色类 Role, 构造方法中有三个属性,编号ID、角色名roleName和备注note

<bean id="role" class="Role">
    <constructor-arg index="0" value="0">
    <constructor-arg index="1" value="CEO">
    <constructor-arg index="2" value="公司老大">
</bean>

1.2)setter 注入,这种方式更灵活。上面的例子,需要有无参构造函数,各个属性需要有setter 方法。

<bean id="role" class="Role">
    <property name="id" value="0">
    <property name="roleName" value="CEO">
    <property name="note" value="公司老大">
</bean>

2 Spring 的 AOP 是基于动态代理实现的,Spring 的数据库事务是在进入 invoke 方法里面然后判断是否需要拦截,需要的时候才根据注解和配置生成数据库事务切面上下文。

注意:如果在事务里面调用自己其他事务方法,被调用的方法上的注解不起作用,仍然是第一个事务的注解。

是因为自调用是新的代理对象的,是原始对象的调用。所以根本就没有 invoke 方法去解析注解和配置生成数据库切面的上下文,独立事务也无从谈起。

如果想要insertRole 方法配置生效,就需要独立写一个类,再去调用 insertRole 方法。

原文地址:https://www.cnblogs.com/zhaopengcheng/p/7151076.html