java

位置:IT落伍者 >> java >> 浏览文章

spring 编程入门十大问题解答


发布日期:2020年09月19日
 
spring 编程入门十大问题解答

如何学习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

               

上一篇:将eclipse创建的java转化为web项目

下一篇:在Eclipse 3.1体验J2SE 5.0新特性四(图)