`
JAVA海洋
  • 浏览: 599683 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

Spring 编程入门十大问题解答

阅读更多
  1、如何学习Spring?

  你可以通过下列途径学习spring:

  (1) spring下载包中doc目录下的MVC-step-by-step和sample目录下的例子都是比较好的spring开发的例子。

  (2) AppFuse集成了目前最流行的几个开源轻量级框架或者工具 Ant,XDoclet,Spring,Hibernate(iBATIS),JUnit,Cactus,StrutsTestCase,Canoo's WebTest,Struts Menu,Display Tag Library,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.iteye.com)的spring栏目

  2、利用Spring框架编程,console打印出log4j:WARN Please initialize the log4j system properly?

  说明你的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: Could not open class path resource [....hbm.xml],提示找不到xml文件?

  原因一般有两个:

  (1)该xml文件没有在classpath中。

  (2)applicationContext-hibernate.xml中的xml名字没有带包名。比如:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource"><ref bean="dataSource"/></property>
<property name="mappingResources">
 <list>
  <value>User.hbm.xml</value>
  错,改为:
  <value>com/yz/spring/domain/User.hbm.xml</value>
 </list>
</property>
<property name="hibernateProperties">
<props>
 <prop key="hibernate.dialect"> net.sf.hibernate.dialect.MySQLDialect </prop>
 <prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

  5、org.springframework.beans.NotWritablePropertyException: Invalid property 'postDao' of bean class?

  出现异常的原因是在application-xxx.xml中property name的错误。

  <property name="...."> 中name的名字是与bean的set方法相关的,而且要注意大小写。

  比如

public class PostManageImpl extends BaseManage implements PostManage {
 private PostDAO dao = null;
 public void setPostDAO(PostDAO postDAO){
  this.dao = postDAO;
 }
}

  那么xml的定义应该是:

<bean id="postManage" parent="txProxyTemplate">
<property name="target">
 <bean class="com.yz.spring.service.implement.PostManageImpl">
  <property name="postDAO"><ref bean="postDAO"/></property> 对
  <property name="dao"><ref bean="postDAO"/></property> 错
 </bean>
</property>
</bean>

  6、Spring中如何实现事务管理?

  首先,如果使用mysql,确定mysql为InnoDB类型。

  事务管理的控制应该放到商业逻辑层。你可以写个处理商业逻辑的JavaBean,在该JavaBean中调用DAO,然后把该Bean的方法纳入spring的事务管理。

  比如:xml文件定义如下:

<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<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="com.yz.spring.service.implement.UserManageImpl">
   <property name="userDAO"><ref bean="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 = new ClassPathXmlApplicationContext(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的作者Rod Johnson编写的。

Expert One on one J2EE Design and Development
Expert One on one J2EE Development Without EJB

  你也该看看martinfowler的Inversion of Control Containers and the Dependency Injection pattern。

http://www.martinfowler.com/articles/injection.html
 
  再好好研读一下spring的文档。

http://www.jactiongroup.net/reference/html/index.html(中文版,未全部翻译)

  还有就是多实践吧。
分享到:
评论

相关推荐

    Spring 编程入门十大问题解答.rar

    Spring 编程入门十大问题解答.rar

    Spring源码解析.pdf

    Spring源码解析

    SPRING入门

    Spring MVC介绍 Spring MVC属于springFrameWork(spring)的产品,它是基于java的轻量级web框架,使用MVC架构模式,将web层进行解耦功能,前端控制器是...提供了强大的约定大于配置(惯例优先原则)的契约式编程支持

    Spring攻略(第二版 中文高清版).part1

    10.1 Flex入门 388 10.1.1 问题 388 10.1.2 解决方案 388 10.1.3 工作原理 388 10.2 离开沙箱 393 10.2.1 问题 393 10.2.2 解决方案 394 10.2.3 工作原理 394 10.3 为应用添加Spring BlazeDS支持 ...

    SSM框架教程Spring+SpringMVC+MyBatis全覆盖_Java热门框架视频教程

    14、Spring编程式事务控制介绍 15、Spring基于XML方式的声明式事务控制 16、Spring基于注解方式声明式事务控制 SpringMVC部分: 1、SpringMVC简介 2、SpringMVC组件解析 3、SpringMVC数据响应 4、SpringMVC数据请求...

    Spring攻略(第二版 中文高清版).part2

    10.1 Flex入门 388 10.1.1 问题 388 10.1.2 解决方案 388 10.1.3 工作原理 388 10.2 离开沙箱 393 10.2.1 问题 393 10.2.2 解决方案 394 10.2.3 工作原理 394 10.3 为应用添加Spring BlazeDS支持 ...

    spring.net中文手册在线版

    使用Spring.NET进行面向方面的编程 12.1.简介 12.1.1.AOP基本概念 12.1.2.Spring.NET AOP的功能 12.1.3.Spring.NET的AOP代理 12.2.Spring.NET中的切入点 12.2.1.概念 12.2.2.切入点的操作 12.2.3.Spring.NET提供的...

    开源框架 Spring Gossip

    使用 JdbcTemplate JdbcTemplate 执行与更新 <br>JdbcTemplate - 查询 以物件方式进行操作 DataFieldMaxValueIncrementer 交易管理 Spring 提供编程式的交易管理(Programmatic ...

    Spring高级之注解驱动开发视频教程

    n 高级特性-自定义PropertySourceFactory实现解析yaml配置文件 n 源码分析-BeanFactory类视图和常用工厂说明 n 源码分析-AnnotationConfigApplicationContext的register方法 n 源码分析-...

    Spring.3.x企业应用开发实战(完整版).part2

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

    Spring3.x企业应用开发实战(完整版) part1

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

    springmvc demo

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...

    JAVA学习资源1.0

    1.Java 并发编程从入门到精通 2.并发编程实战 3.算法 4.高效程序员的45个习惯 5.深入java虚拟机 6.阿里巴巴JAVA开发手册 7.Java核心技术 卷1 基础篇 8.Netty_in_Action 9.java性能优化 10.spring源码解析 11.java 8...

    Java工程师面试题-并发编程-高级架构

    Java并发编程.pdf JAVA核心知识点整理.pdf Java高级架构知识点整理.pdf Java高级架构面试知识点整理.pdf JVM与性能优化知识点整理.pdf MySQL性能调优与架构设计解析文档.pdf Nginx入门到实战.pdf springCloud笔记....

    2021最新java面试合集pdf.rar

    Docker —— 从入门到实践 - v1.0.pdf Dubbo部署文档.doc Dubbo面试专题.docx java后端面试题答案.pdf Java并发Fork-Join框架原理解析.docx JAVA核心知识整理.pdf JAVA核心知识点整理.pdf Java面试笔记.docx JAVA...

    A Guide to Porting C C++ to Rust 等53本

    Kivy中文编程指南.epub kungeekUI.epub laravel 源码解析.epub Learning Rust.epub Little ASP.NET Core Book.epub MongoDB入门指南.epub OpenStack最终用户文档(简体中文版).epub PHP 5.5 Web零基础教程:开发一...

    SpringMVC学习笔记整合搭建框架

    2.Spring入门 2.1.Springmvc是什么 3.3.jdbc编程步骤: 1、加载数据库驱动 2、创建并获取数据库链接 3、创建jdbc statement对象 4、设置sql语句 5、设置sql语句中的参数(使用preparedStatement) 6、通过statement...

    Java语言基础下载

    第三十章:struts入门 623 学习目标 623 Struts简介 624 什么是应用框架 624 WEB框架所要解决的问题 625 建立简单的Struts应用 627 内容总结 636 独立实践 636 第三十一章:Struts基础 637 学习目标 637 MVC 638 ...

Global site tag (gtag.js) - Google Analytics