关于对Spring中IOC与AOP的理解

关于对Spring中IOC与AOP的理解

Spring框架用过很多次,一直对它的一些功能不是很了解,最近仔细研究了一下。

IOC(控制反转):控制反转,顾名思义就是一个控制权的转向问题,就比如皇帝管着臣子,有一天有一个臣子篡权夺位,臣子开始管理皇帝和其他人,这就一个控制反转。有反转就意味着有正转,正转就是哪里需要对象,就在哪里去new对象。例如:老师想要获得学生的英语成绩,那就要new学生对象,利用学生去获取成绩。

代码:

public class Teacher{

public int getEnglishScore(){

Student student=new Student();

int score=student.getEnglish();

return score;

}

}

在Spring中,控制反转就是将创建对象的权利交给Spring容器去管理。程序员只需要去调用就可以了。如上例,只需要在spring.xml中去声明

spring.xml(setter注入):

<bean id="stu" class="com.school.bean.Student"></bean> <!--声明学生bean-->

<bean id="teacher" class="com.school.bean.Teacher"> <!--声明老师bean-->

<property name="student" ref="stu"></property> <!--将学生bean注入只老师bean中-->

注意:property标签中的name值要与代码中的setter的值一样,ref的值要与声明的id一致!!!

</bean>

public class Teacher{

private Student student;

public void setStudent(Student student){

this.student=student;

}

public int getEnglishScore(){

int score=student.getEnglish();

return score;

}

}

AOP(面向切面编程):面向切面在我理解为就是将一个圆柱体从想要插入的地方切开,然后将自己想要增加的功能放进去。

<aop:config>

<aop:pointcut id="pointcut" expression="execution(* com.school.bean.Teahcer.getEnglishScore())"/> <!--配置切点,定义在哪里切。像本例一样,在执行老师获取英语成绩时,定义一个切点-->

<aop:aspect id="tAop" ref="stu"> <!--定义切面,即为在老师获取英语成绩时添加功能-->

<aop:before method="getStudentName()" pointcut-ref="pointcut"/> <!--在老师获取英语成绩之前,获得学生的姓名-->

</aop:aspect>

</aop:config>

还有一个通知

<tx:advice id="txAdvice" transaction-manager="transactionManager"> <!--定义一个通知,将通知中执行的方法与事务相关联,以事务的形式去执行-->

<tx:method name="get*"  propagation="REQUIRED"  />

</tx:advice>

<aop:config>

<aop:pointcut id="pointcut" expression="execution(* com.school.bean.Teahcer.getEnglishScore())"/> <!--配置切点,定义在哪里切。像本例一样,在执行老师获取英语成绩时,定义一个切点-->

<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/> <!--定义一个通知器,当执行到切点时,会触发通知,此时的通知就相当于增加的功能,即增强-->

</aop:config>


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值