如何学习Spring?
你可以通过下列途径学习spring() spring下载包中doc目录下的MVCstepbystep和sample目录下的例子都是比较好的spring开发的例子
() AppFuse集成了目前最流行的几个开源轻量级框架或者工具AntXDocletSpringHibernate(iBATIS)JUnitCactusStrutsTestCaseCanoos WebTestStruts MenuDisplay Tag LibraryOSCacheJSTLStruts 你可以通过AppFuse源代码来学习spring AppFuse网站?page=AppFuse
()Spring 开发指南(夏昕)(_Dev_Guiderar)
一本spring的入门书籍里面介绍了反转控制和依赖注射的概念以及spring的bean管理spring的MVCspring和hibernteiBatis的结合
() spring学习的中文论坛SpringFramework中文论坛()
Java视线论坛()的spring栏目
利用Spring框架编程console打印出logjWARN Please initialize the logj system properly?
说明你的logjproperties没有配置请把logjproperties放到工程的classpath中eclipse的classpath为bin目录由于编译后src目录下的文件会拷贝到bin目录下所以你可以把logjproperties放到src目录下
这里给出一个logjproperties的例子
logjrootLogger=DEBUGstdout logjappenderstdout=orgapachelogjConsoleAppender logjappenderstdoutlayout=orgapachelogjPatternLayout logjappenderstdoutlayoutConversionPattern=%d %p (%F%L) %m%n
出现 javalangNoClassDefFoundError?
一般情况下是由于你没有把必要的jar包放到lib中
比如你要采用spring和hibernate(带事务支持的话)你除了springjar外还需要hibernatjaraopalliancejarcgligjarjakartacommons下的几个jar包
下载spring开发包提供两种zip包springframeworkwithdependencieszip和springframeworkzip我建议你下载springframeworkwithdependencieszip这个zip解压缩后比后者多一个lib目录其中有hibernatejeedomjaopalliancejakartacommons等常用包
javaioFileNotFoundException Could not open class path resource [……hbmxml]提示找不到xml文件?
原因一般有两个()该xml文件没有在classpath中
()applicationContexthibernatexml中的xml名字没有带包名比如<bean id=sessionFactory class=orgspringframeworkormhibernateLocalSessionFactoryBean> <property name=dataSource><ref bean=dataSource/></property> <property name=mappingResources> <list> <value>Userhbmxml</value> 错改为 <value>com/yz/spring/domain/Userhbmxml</value> </list> </property> <property name=hibernateProperties> <props> <prop key=hibernatedialect> netsfhibernatedialectMySQLDialect </prop> <prop key=hibernateshow_sql>true</prop> </props> </property> </bean>
orgspringframeworkbeansNotWritablePropertyException Invalid property postDao of bean class?
出现异常的原因是在applicationxxxxml中property name的错误
<property name=……> 中name的名字是与bean的set方法相关的而且要注意大小写
比如public class PostManageImpl extends BaseManage implements PostManage { private PostDAO dao = nullpublic void setPostDAO(PostDAO postDAO){ thisdao = postDAO}那么xml的定义应该是<bean id=postManage parent=txProxyTemplate> <property name=target> <bean class=comyzspringserviceimplementPostManageImpl> <property name=postDAO><ref bean=postDAO/></property> 对<property name=dao><ref bean=postDAO/></property> 错</bean> </property> </bean>
Spring中如何实现事务管理?
首先如果使用mysql确定mysql为InnoDB类型
事务管理的控制应该放到商业逻辑层你可以写个处理商业逻辑的JavaBean在该JavaBean中调用DAO然后把该Bean的方法纳入spring的事务管理
比如xml文件定义如下<bean id=txProxyTemplate abstract=true class=orgspringframeworktransactioninterceptorTransactionProxyFactoryBean> <property name=transactionManager><ref bean=transactionManager/></property> <property name=transactionAttributes> <props> <prop key=save*>PROPAGATION_REQUIRED</prop> <prop key=remove*>PROPAGATION_REQUIRED</prop> <prop key=*>PROPAGATION_REQUIRED</prop> </props> </property> </bean>
<bean id=userManage parent=txProxyTemplate> <property name=target> <bean class=comyzspringserviceimplementUserManageImpl> <property name=userDAO><ref bean=userDAO/></property> </bean> </property> </bean>
comyzspringserviceimplementUserManageImpl就是我们的实现商业逻辑的JavaBean我们通过parent元素?/span>
如何管理Spring框架下更多的JavaBean?
JavaBean越多spring配置文件就越大这样不易维护为了使配置清晰我们可以将JavaBean分类管理放在不同的配置文件中 应用启动时将所有的xml同时加载
比如
DAO层的JavaBean放到applicationContexthibernatexml中商业逻辑层的JavaBean放到applicationContextservicexml中然后启动类中调用以下代码载入所有的ApplicationContext
String[] paths = {com/yz/spring/dao/hibernate/applicationContexthibernatexmlcom/yz/spring/service/applicationContextservicexml}ctx = new ClassPathXmlApplicationContext(paths)
web应用中如何加载ApplicationContext?
可以通过定义webxml由web容器自动加载
<servlet><servletname>context</servletname><servletclass>orgsprntextContextLoaderServlet</servletclass><loadonstartup></loadonstartup></servlet>
<contextparam><paramname>contextConfigLocation</paramname><paramvalue>/WEBINF/applicationContexthibernatexml</paramvalue><paramvalue>/WEBINF/applicationContextservicexml</paramvalue></contextparam>
在spring中如何配置的logj?
在webxml中加入以下代码即可
<contextparam><paramname>logjConfigLocation</paramname><paramvalue>/WEBINF/logjproperties</paramvalue></contextparam>
Spring框架入门的编程问题解决了我该如何更深地领会Spring框架呢?
这两本书你该去看看这两本书是由Spring的作者Rod Johnson编写的
Expert One on one JEE Design and Development Expert One on one JEE Development Without EJB
你也该看看martinfowler的Inversion of Control Containers and the Dependency Injection pattern