1:核心IOC(控制反转)inversion of control
1、借助“第三方”实现具有依赖关系的对象之间解耦,其中的第三方就类似于中介,在这儿指的是Spring
2、面向接口编程(利用接口对子类的动态代理实现多态)
3、实现了业务层和数据访问层的解耦
4、实现步骤
1:编写接口Dao
2:编写接口实现类Impl
目的:通过Spring实例化对象
4:applicationContext中装配bean
property中的ref名字必须和上面装配的bean的name相同
以上即为IOC和AOP具体的配置方式,一定要理解红色标注的文字
1、借助“第三方”实现具有依赖关系的对象之间解耦,其中的第三方就类似于中介,在这儿指的是Spring
2、面向接口编程(利用接口对子类的动态代理实现多态)
3、实现了业务层和数据访问层的解耦
4、实现步骤
1:编写接口Dao
2:编写接口实现类Impl
3:设计服务层,编写service类
1、接口注入:增加接口私有数据成员
2、接口注入方法:set方法目的:通过Spring实例化对象
4:applicationContext中装配bean
<bean id="userDao" class="com.hp.dao.impl.UserDaoJDBCImpl" />
<bean id="userservice" class="com.hp.service.UserService">
<property name="userDao" ref="userDao" />
</bean>
注:property中的name名必须和service类中注入的接口实例名相同(
实际上注入对象时,找寻的为注入类中的set+name名首字母大写的赋值方法进行注入的)
property中的ref名字必须和上面装配的bean的name相同
建议:三者命名统一
2:AOP面向切面编程
面向切面,即为横向上进行业务操作,将系统分解为方面(aspect),关注的方向为横向
具体配置方式如下:
<!-- 定义切入点,即什么位置执行通知 -->
<aop:config>
<aop:pointcut expression="execution(* com.aop.service..*.*(..))" id="testpointcut"/>
<!-- 定义切面时交由哪一个类进行操作 即对切入点统一操作 -->
<aop:aspect id="asp" ref="beforeAdvice">
<!-- before标识方法执行之前操作 -->
<aop:before pointcut-ref="testpointcut" method="doBefore" />
<aop:after pointcut-ref="testpointcut" method="doAfter"/>
</aop:aspect>
</aop:config>
以上即为IOC和AOP具体的配置方式,一定要理解红色标注的文字
注:笔者也是初入Spring,有关理解错误的地方,敬请各位指出以做进一步修改,大家共同进步