<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title></title>
    <description></description>
    <link>http://myboycsr.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>敏捷开发简介</title>
        <author>myboycsr</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://myboycsr.javaeye.com">myboycsr</a>&nbsp;
                    链接：<a href="http://myboycsr.javaeye.com/blog/208488" style="color:red;">http://myboycsr.javaeye.com/blog/208488</a>&nbsp;
          发表时间: 2008年06月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          敏捷开发（agile development）是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中，软件项目的构建被切分成多个子项目，各个子项目的成果都经过测试，具备集成和可运行的特征。简言之，就是把一个大项目分为多个相互联系，但也可独立运行的小项目，并分别完成，在此过程中软件一直处于可使用状态。 <br />敏捷开发技术的特点和优势：<br /><br />1．个体和交互胜过过程和工具<br /><br />2．可以工作的软件胜过面面俱到的文档<br /><br />3．客户合作胜过合同谈判<br /><br />4．响应变化胜过遵循计划<br /><br />敏捷开发技术的12个原则<br /><br />1．我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。<br /><br />2．即使到了开发的后期，也欢迎改变需求。<br /><br />3．经常性地交付可以工作的软件，交付的间隔可以从几周到几个月，交付的时间间隔越短越好<br /><br />4．在整个项目开发期间，业务人员和开发人员必须天天都在一起工作。<br /><br />5．围绕被激励起来的个人来构建项目。<br /><br />6．在团队内部，最具有效果并且富有效率的传递信息的方法，就是面对面的交谈。<br /><br />7．工作的软件是首要的进度度量标准。<br /><br />8．敏捷过程提倡可持续的开发速度。<br /><br />9．不断地关注优秀的技能和好的设计会增强敏捷能力。<br /><br />10．简单使未完成的工作最大化。<br /><br />11．最好的构架、需求和设计出自于自组织的团队。<br /><br />12．每隔一定时间，团队会在如何才能更有效地工作方面进行反省，然后相应地对自己的行为进行调整。<br /><br />敏捷开发技术的适用范围<br /><br />1.项目团队的人数不能太多<br /><br />2.项目经常发生变更<br /><br />3.高风险的项目实施<br /><br />4.开发人员可以参与决策<br /><br />敏捷开发技术的几种主要类型<br /><br />1.XP（Extreme Programming ）－－ 极限编程<br /><br />2.Cockburn的水晶系列方法<br /><br />3.开放式源码<br /><br />4.Highsmith的适应性软件开发方法〔ASD〕
          <br/><br/>
          <span style="color:red;">
            <a href="http://myboycsr.javaeye.com/blog/208488#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jun 2008 09:44:15 +0800</pubDate>
        <link>http://myboycsr.javaeye.com/blog/208488</link>
        <guid>http://myboycsr.javaeye.com/blog/208488</guid>
      </item>
          <item>
        <title>我的 hibernate 级联插入</title>
        <author>myboycsr</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://myboycsr.javaeye.com">myboycsr</a>&nbsp;
                    链接：<a href="http://myboycsr.javaeye.com/blog/194040" style="color:red;">http://myboycsr.javaeye.com/blog/194040</a>&nbsp;
          发表时间: 2008年05月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我做一个网上书城的项目，用户下订单要用两张表完成，ws_order,ws_orderItem<br />ws_orderItem通过外键关联第一张表的主键。<br />&nbsp;&nbsp;&nbsp; 表的映射文件关键部分如下：<br /><u>WsOrder.hbm.xml:</u><br /><br />&nbsp;&nbsp; &lt;set name="wsOrderItems" inverse="false" cascade="all"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;key><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="orderId" not-null="true" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/key><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;one-to-many class="com.yourcompany.table.WsOrderItem" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/set><br /><br /><u>WsOrderItem.hbm.xml</u><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;many-to-one name="wsOrder"&nbsp;&nbsp; class="com.yourcompany.table.WsOrder" fetch="select" cascade="all"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="orderId"/>&nbsp;&nbsp;&nbsp; //注意：这列要可以为空<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/many-to-one><br /><br />使用的方法如下：<br /><br />	public WsOrder createOrder(CarBean carBean,WsUser wsUser,String payment){<br />		WsOrder order=new WsOrder();<br />		<br />		Set&lt;WsOrderItem> orderItems=new HashSet();<br />		for(int i=0;i&lt;carBean.getBookList().size();i++){<br />			WsBook wsBook=bookDaoInter.findById(carBean.getBookList().get(i).getBookId());<br />			orderItems.add(createOrderItem(<br />				(short)carBean.bookList.get(i).getNumber(),<br />				wsBook<br />			));<br />		}<br />		<br />		order.setAddress(wsUser.getAddress());<br />		order.setCreatedDate(new Date());<br />		order.setDeliver(carBean.getDeliver());<br />		order.setMobilePhone(wsUser.getMobilePhone());<br />		order.setName(wsUser.getName());<br />		order.setPayment(payment);<br />		order.setState("未发货");<br />		order.setTelephone(wsUser.getTelephone());<br />		order.setWsOrderItems(orderItems);<br />		order.setWsUser(wsUser);<br />		order.setZip(wsUser.getZip());<br />		<br />		return order;<br />	}<br /><br />然后用DAO保存order即可<br />orderItem的外键并没有设置(所以这列要可以为空，不然会有异常)，保存后会自动关联到order上
          <br/><br/>
          <span style="color:red;">
            <a href="http://myboycsr.javaeye.com/blog/194040#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 18 May 2008 10:44:29 +0800</pubDate>
        <link>http://myboycsr.javaeye.com/blog/194040</link>
        <guid>http://myboycsr.javaeye.com/blog/194040</guid>
      </item>
          <item>
        <title>Acegi得到当前用户</title>
        <author>myboycsr</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://myboycsr.javaeye.com">myboycsr</a>&nbsp;
                    链接：<a href="http://myboycsr.javaeye.com/blog/192962" style="color:red;">http://myboycsr.javaeye.com/blog/192962</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Spring容器里创建一个Bean来获取当前用户的信息的时候，该FactoryBean的主方法如下：<br />	@Override<br />	public Object getObject() throws Exception {<br /><br />		SecurityContext ctx = SecurityContextHolder.getContext(); <br />		Authentication auth = ctx.getAuthentication(); <br />		if(auth!=null)<br />			wsUser=userDaoInter.findById(auth.getName());<br />		else<br />			wsUser=userDaoInter.findById("匿名");<br />		return wsUser;<br />	}
          <br/><br/>
          <span style="color:red;">
            <a href="http://myboycsr.javaeye.com/blog/192962#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 15:50:34 +0800</pubDate>
        <link>http://myboycsr.javaeye.com/blog/192962</link>
        <guid>http://myboycsr.javaeye.com/blog/192962</guid>
      </item>
          <item>
        <title>Hibernate 延迟加载引发一串问题</title>
        <author>myboycsr</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://myboycsr.javaeye.com">myboycsr</a>&nbsp;
                    链接：<a href="http://myboycsr.javaeye.com/blog/191965" style="color:red;">http://myboycsr.javaeye.com/blog/191965</a>&nbsp;
          发表时间: 2008年05月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Hibernate的延迟加载技术使要在jsp页面访问数据时产生了 no session的错误，<br />可以在映射文件添加lazy="false" 来关掉，不过这样就使用不到延迟加载技术了，我用的是struts，所以要用Spring提供的 OpenSessionInViewFilter这个过滤器来处理。<br />&nbsp;&nbsp;&nbsp; 添加后产生了另一个问题，就是OpenSessionInViewFilter找不到SessionFactory这个bean，仔细看了自己的项目有两个的IOC容器，一个是在web.xml中定义的org.springframework.web.context.ContextLoaderListener监听器来启动ioc容器，另一个是struts-config.xml中为了让struts与spring进行无缝集成添加的org.springframework.web.struts.ContextLoaderPlugIn来启动IOC容器供Action使用，sessionFactory就定义在第二个容器中，而矛盾的地方是这两个容器都把自己绑定到了servletContext上，不过绑定的名字不一样，通过OpenSessionInViewFilter的源代码得知(体会到通过Spring的源代码能从根本上认识并解决问题)这个过滤器是按第一个的绑定名去找IOC容器的，而我几乎所有的bean都放到第二个容器里（因为Action使用的bean和DAO都放在这），所以找不到sessionFactory。<br />&nbsp;&nbsp;&nbsp; 知道了问题所在，解决的方法有两种，都是要改写spring的类。第一种改写OpenSessionInViewFilter使它到第二个容器中去找，第二种是改写ContextLoaderPlugIn使在绑定到ServletContext的同时，也用第一种的名字绑定一次，我用的是第二种，因为第一种中要用用到第二钟容器中的绑定名是动态的，很难确定，第二种方式就只需要加一行。<br />&nbsp;&nbsp;&nbsp; 我的方法如下：<br />&nbsp;&nbsp;&nbsp; 建一个类继承ContextLoaderPlugIn，然后覆盖方法ininWebApplicationContext<br />代码如下：<br /><br />package com.yourcompany.operation.common;<br /><br />import org.springframework.web.struts.ContextLoaderPlugIn;<br />import org.springframework.beans.BeansException;<br />import org.springframework.web.context.WebApplicationContext;<br />import org.springframework.web.context.support.WebApplicationContextUtils;<br /><br />public class MyContextLoaderPlugIn extends ContextLoaderPlugIn {<br />	protected WebApplicationContext initWebApplicationContext() throws BeansException, IllegalStateException {<br />		getServletContext().log("Initializing WebApplicationContext for Struts ActionServlet '" +<br />				getServletName() + "', module '" + getModulePrefix() + "'");<br />		WebApplicationContext parent = WebApplicationContextUtils.getWebApplicationContext(getServletContext());<br /><br />		WebApplicationContext wac = createWebApplicationContext(parent);<br />		if (logger.isInfoEnabled()) {<br />			logger.info("Using context class '" + wac.getClass().getName() + "' for servlet '" + getServletName() + "'");<br />		}<br /><br />		// Publish the context as a servlet context attribute.<br />		String attrName = getServletContextAttributeName();<br />		getServletContext().setAttribute(attrName, wac);<br />		<br />		//自己添加的内容，为了让OpenSessionInViewFilter也能找到Spring容器<br />		getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);<br />		<br />		if (logger.isDebugEnabled()) {<br />			logger.debug("Published WebApplicationContext of Struts ActionServlet '" + getServletName() +<br />					"', module '" + getModulePrefix() + "' as ServletContext attribute with name [" + attrName + "]");<br />		}<br />		<br />		return wac;<br />	}<br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://myboycsr.javaeye.com/blog/191965#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 May 2008 18:16:32 +0800</pubDate>
        <link>http://myboycsr.javaeye.com/blog/191965</link>
        <guid>http://myboycsr.javaeye.com/blog/191965</guid>
      </item>
      </channel>
</rss>