|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。编程|解答|成绩 1、怎样进修Spring?
你能够经由过程以下路子进修spring:
(1)spring下载包中doc目次下的MVC-step-by-step和sample目次下的例子都是对照好的spring开辟的例子。
(2)AppFuse集成了今朝最盛行的几个开源轻量级框架大概工具Ant,XDoclet,Spring,Hibernate(iBATIS),JUnit,Cactus,StrutsTestCase,CanoosWebTest,StrutsMenu,DisplayTagLibrary,OSCache,JSTL,Struts。
你能够经由过程AppFuse源代码来进修spring。
AppFuse网站:http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse
(3)Spring开辟指南(夏昕)(http://www.xiaxin.net/Spring_Dev_Guide.rar)
一本spring的进门书本,内里先容了反转把持和依附打针的观点,和spring的bean办理,spring的MVC,spring和hibernte,iBatis的分离。
(4)spring进修的中文论坛
SpringFramework中文论坛(http://spring.jactiongroup.net)
Java视野论坛(http://forum.javaeye.com)的spring栏目
2、使用Spring框架编程,console打印出log4j:WARNPleaseinitializethelog4jsystemproperly?
申明你的log4j.properties没有设置。请把log4j.properties放到工程的classpath中,eclipse的classpath为bin目次,因为编译后src目次下的文件会拷贝到bin目次下,以是你能够把log4j.properties放到src目次下。
这里给出一个log4j.properties的例子:
log4j.rootLogger=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d%5p(%F:%L)-%m%n
3、呈现java.lang.NoClassDefFoundError?
一样平常情形下是因为你没有把需要的jar包放到lib中。
好比你要接纳spring和hibernate(带事件撑持的话),你除spring.jar外还必要hibernat.jar、aopalliance.jar、cglig.jar、jakarta-commons下的几个jar包。
http://www.springframework.org/download.html下载spring开辟包,供应两种zip包
spring-framework-1.1.3-with-dependencies.zip和spring-framework-1.1.3.zip,我倡议你下载spring-framework-1.1.3-with-dependencies.zip。这个zip解紧缩后比后者多一个lib目次,个中有hibernate、j2ee、dom4j、aopalliance、jakarta-commons等经常使用包。
4、java.io.FileNotFoundException:Couldnotopenclasspathresource[....hbm.xml],提醒找不到xml文件?
缘故原由一样平常有两个:
(1)该xml文件没有在classpath中。
(2)applicationContext-hibernate.xml中的xml名字没有带包名。好比:
<beanid="sessionFactory"class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<propertyname="dataSource"><refbean="dataSource"/></property>
<propertyname="mappingResources">
<list>
<value>User.hbm.xml</value>
错,改成:
<value>com/yz/spring/domain/User.hbm.xml</value>
</list>
</property>
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
<propkey="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
5、org.springframework.beans.NotWritablePropertyException:InvalidpropertypostDaoofbeanclass?
呈现非常的缘故原由是在application-xxx.xml中propertyname的毛病。
<propertyname="....">中name的名字是与bean的set办法相干的,并且要注重巨细写。
好比
publicclassPostManageImplextendsBaseManageimplementsPostManage{
privatePostDAOdao=null;
publicvoidsetPostDAO(PostDAOpostDAO){
this.dao=postDAO;
}
}
那末xml的界说应当是:
<beanid="postManage"parent="txProxyTemplate">
<propertyname="target">
<beanclass="com.yz.spring.service.implement.PostManageImpl">
<propertyname="postDAO"><refbean="postDAO"/></property>对
<propertyname="dao"><refbean="postDAO"/></property>错
</bean>
</property>
</bean>
6、Spring中怎样完成事件办理?
起首,假如利用mysql,断定mysql为InnoDB范例。
事件办理的把持应当放到贸易逻辑层。你能够写个处置贸易逻辑的JavaBean,在该JavaBean中挪用DAO,然后把该Bean的办法归入spring的事件办理。
好比:xml文件界说以下:
<beanid="txProxyTemplate"abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<propertyname="transactionManager"><refbean="transactionManager"/></property>
<propertyname="transactionAttributes">
<props>
<propkey="save*">PROPAGATION_REQUIRED</prop>
<propkey="remove*">PROPAGATION_REQUIRED</prop>
<propkey="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<beanid="userManage"parent="txProxyTemplate">
<propertyname="target">
<beanclass="com.yz.spring.service.implement.UserManageImpl">
<propertyname="userDAO"><refbean="userDAO"/></property>
</bean>
</property>
</bean>
com.yz.spring.service.implement.UserManageImpl就是我们的完成贸易逻辑的JavaBean。我们经由过程parent元素声明其事件撑持。
7、怎样办理Spring框架下更多的JavaBean?
JavaBean越多,spring设置文件就越年夜,如许不容易保护。为了使设置明晰,我们能够将JavaBean分类办理,放在分歧的设置文件中。使用启动时将一切的xml同时加载。
好比:
DAO层的JavaBean放到applicationContext-hibernate.xml中,贸易逻辑层的JavaBean放到applicationContext-service.xml中。然后启动类中挪用以下代码载进一切的ApplicationContext。
String[]paths={"com/yz/spring/dao/hibernate/applicationContext-hibernate.xml",
"com/yz/spring/service/applicationContext-service.xml"};
ctx=newClassPathXmlApplicationContext(paths);
8、web使用中怎样加载ApplicationContext?
能够经由过程界说web.xml,由web容器主动加载。
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-hibernate.xml</param-value>
<param-value>/WEB-INF/applicationContext-service.xml</param-value>
</context-param>
9、在spring中怎样设置的log4j?
在web.xml中到场以下代码便可。
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
10、Spring框架进门的编程成绩办理了,我该怎样更深地了解Spring框架呢?
这两本书你该往看看。这两本书是由Spring的作者RodJohnson编写的。
ExpertOneononeJ2EEDesignandDevelopment
ExpertOneononeJ2EEDevelopmentWithoutEJB
你也该看看martinfowler的InversionofControlContainersandtheDependencyInjectionpattern。
http://www.martinfowler.com/articles/injection.html
再好好研读一下spring的文档。
http://www.jactiongroup.net/reference/html/index.html(中文版,未全体翻译)
另有就是多理论吧。
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 |
|