首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

<Spring in Action>

2012-08-29 
Spring in Action1. ref标签中的 bean, local, parent 三个属性的区别 2.listvalue.../list和se

<Spring in Action>

1. <ref>标签中的 bean, local, parent 三个属性的区别

2. <list><value...</list>和<set><value...< /list>可以换着用都可以为 List, Set 以及数组属性赋值

3. <map>属性用 spring? 进行装匹时 key 值只能是字符串类型,不过一般能满足要求

4. 装配 map 属性要用 <entry key="key1"><value>foo</value></entry>, 而装匹 properties 属性可以写成 <prop key="key1">foo</prop>, 这是因为 properties 的值总是字符串,而 map 中很随意

5. 用 <property name="foo"><null/></property> 形式设置属性为 null, 区别为字符串 "null"

6. 通过构造函数注入依赖时,对多参数需要借助于 index 或 type 属性来指定对应哪个参数,index 属性能应付所有情况

7. 可为 bean 设置 autowire为四个值, byname, byType, constructor, autodetect, 四种方式自动装匹;也可以在 <beans> 中设置 defaul-tautowire 属性。手动和自动可以混合使用,手动优先。你应该清楚自己在做什么,所以不建议用自动装配

8. BeanPostProcessor的方法 postProcessBeforeInitialization 在 bean 初始化之前调用,postProcessAfterInitialization 是在 bean 初始化之后调用,需要注册到 BeanFactory 上,如 factory.addBeanPostProcessor(new BeanPostProcessor(){...})。内置的 ApplicationContextAwareProcessor 注册在了 AbstractApplicationContext 上了

9. BeanFactoryPostProcessor 是在 Bean 工厂载入所有 Bean 定义后,实例化 Bean 之前作处理。如果是 AbstractApplicationContext ,那么只需要配置 <bean id="myBeanFactoryPostProcessor" type="com.unmi.MyCoursesAction"/>其实type属性是被所配置的controller忽略掉了,所以可省去 type属性 ction也是由Spring来配置装配,也是通过 path--name来对应

48. 感觉Spring与Struts的搭配总有些牵强,没有一种更完美的方式

49. HibernateDaoSupport有getSession()和closeSessionIfNecessary(),可取得Session作更自 由的操作


50. DaoSupport有以下实现类:CciDaoSupport, HibernateDaoSupport, JdbcDaoSupport, JdoDaoSupport, PersistenceBrokerDaoSupport, SqlMapClientDaoSupport, SqlMapDaoSupport, TopLinkDaoSupport,据此了解支持哪些类型DB操作

51. 要用声明式事物,需要用到 TransactionProxyFactoryBean 来包括你的 Service 类。

52. 能够简单配置被代理的Service的 transactionAttributes 属性声明事物,如下对方法名称为addStudent(可能是多个重载方法)启用事物



59. 更为精彩的是自动代理的方式来总体配置各分散类中方法的事物属性,结合使用 DefaultAdvisorAutoProxyCreator, TransactionAttributeSourceAdvisor 和 TransactionInterceptor (我还需要详细理清楚)

60. 当使用自动代理时,MethodMapTransationAttributeSource 就能很多的派上用场了,它的 methodMap 属性中可以指定哪个类的哪个方法,可以使用通配符

?

61. 对于 JndiObjectFactoryBean 查找 jndi? 资源未提及,如何设置 jndiEnvironment 属性,如果是在J2EE容器中运行,没什么问题,只是以单独应用程序运行就会错,如下在容器外运行需要加上 jndiEnvironment 配置,指定实现类,及URL等


最后,你需要把验证类注入给你的 CommandController 的 validator 属性

<property name="validator"> <bean class="com.unmi.MyValidator"/> </property>



validate 方法会在 AbstractCommandController.handleRequestInternal(request,response) 调用,SimpleFormController.onSubmit() 会在调用 doSubmitAction() 之后,把 errors 传递给 View。以后要搞清楚错误信息要如何显示出来

85. Spring 提供了 AbstractWizardFormController 来简化跨越多个页面处理表单的工作 (向导式页面表单),这是 Struts 所没有的功能。您只需要覆盖 processFinish(request,response,command,errors)方法,在最后一个页面提交后将会被调用处理收集的数据, 向导中的页面流程配置到 AbstractWizardFormController 的 pages 属性,如下

Java 代码
    <bean?id="feedbackController"?class="com.unmi.FeedbackWizardController">??????<property?name="pages">??????????<list>??????????????<value>general</value>?<!--?填 写一般性问题?-->??????????????<value>instructor</value>??<!--?填 写导师绩效的问题?-->??????????????<value>course</value>??<!--?填 写课程内容和教材问题?-->??????????????<value>facilities</value>??<!--?填 写质量问题?-->??????????</list>??????</property>??</bean>?

热点排行