日期:2014-05-20  浏览次数:20748 次

阿里巴巴电话面试,请各位高手指点一下
1.Spring的AOP如何进行数据库的事物提交?
2.Oracle的ROWNUM进行分页时,是否能直接使用,为什么?
3.详细说明Spring的IOC技术如何使用,好处是什么?
4.工厂模式有哪几种?他们之间的区别是什么?

------解决方案--------------------
1.Spring 在 AOP 中开启事务,接着调用方法,方法调用完成后提交事务,出现异常时回滚事务。具体的切入点在
方法调用前、方法调用后和抛出异常时等三处。

------解决方案--------------------
试着回答一下,嘿嘿:
1。spring的aop是为了实现交叉业务的 分离,在需要提交事务的方法切入提交事务的方法就可以了吧?
2。rownum有一定限制,它只能rownum>多少多少使用,所以rownum外面得再套个sql,例如:
select * from (select a.字段,rownum n from a where n>100) where n<500;
3.ioc这个东西呀,简单点说么,是为了降低类与类之间的依赖关系,将类的实现通过ioc实现,一个类a在需要类b的实例的时候,只要通过spring的ioc就可以了,不需要知道它是如何产生这个实例的。
4。工厂模式,我知道的好像就单例和静态,区别嘛,还用说嘛!
------解决方案--------------------
AOP好像不是只有事务提交吧?用途很广,rownum不能直接使用,需要使用子查询才行
IOC可以自动装配,单例模式,不耗内存,效益高
抽象工厂,工厂方法,单例模式,建造模式,原型模式
------解决方案--------------------
1.aop,就是给业务逻辑层配置一个切入点,也可以配置到dao层,但是业务逻辑有时可以调用多个dao的方法。从下面往上看先看<aop:confg>里面的<aop:advisor>配置切入点pointcut-ref,然后事物传播性,那个transactionManager是事物管理器,就不用说了吧
<!-- 配置事物的传播性 -->
<!--<tx:advice id="txAdvice" transaction-manager="transactionManager">
用于配置详细的事务语义 
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>

<aop:config>
配置一个切入点,匹配cscope.accp.serviceImpl包下 所有以Impl结尾的类的所有方法的执行 
<aop:pointcut id="leePointcut" expression="execution(* scope.accp.serviceImpl.*Impl.*(..))" />
指定在txAdvice切入点应用txAdvice事务切面
<aop:advisor advice-ref="txAdvice" pointcut-ref="leePointcut" />
</aop:config>