<b>1</b><b>、添加一個接口</b><b></b>
<b>名稱為</b><b>UserInfoInterface</b><b>,包名稱為</b><b>springj2seapp</b>
<b></b>
<b>在該接口中添加一個一個業務方法</b><b></b>
<b> </b>package springj2seapp;
public interface UserInfoInterface
{
public boolean doUserLogin(UserInfoVO oneUserInfo);
}
<b>2</b><b>、再添加一個實作類</b><b></b>
<b>類名稱為</b><b>UserInfoManage</b><b>,包名稱為</b><b>springj2seapp </b><b>實作</b>UserInfoInterface
<b> </b>
<b> </b>
<b>3</b><b>、再增加一個業務實體</b><b>UserInfoVO</b><b>類</b>
<b></b><b></b>
<b>在該</b><b>VO</b><b>類中新增兩個成員</b><b></b>
<b>private String userName;</b>
<b>private String userPassWord;</b>
<b>最後将産生出下面的代碼</b><b></b>
package springj2seapp;
public class UserInfoVO {
<b>private String userName=null;</b>
<b> private String userPassWord=null; </b>
public UserInfoVO()
{
super();
// TODO 自動生成構造函數存根
}
<b>public String getUserName() {</b>
<b> return userName;</b>
<b> }</b>
<b> public void setUserName(String userName) {</b>
<b> this.userName = userName;</b>
<b> public String getUserPassWord() {</b>
<b> return userPassWord;</b>
<b> public void setUserPassWord(String userPassWord) {</b>
<b> this.userPassWord = userPassWord;</b>
<b>4</b><b>、程式設計前面的</b><b>UserInfoManage</b><b>類實作功能</b><b></b>
public class UserInfoManage implements UserInfoInterface {
public UserInfoManage()
<b>public boolean doUserLogin(UserInfo oneUserInfo)</b>
<b> {</b>
<b> String userName=oneUserInfo.getUserName();</b>
<b> String userUserPassWord=oneUserInfo.getUserPassWord();</b>
<b> </b>
<b>//</b><b>下面的代碼實際應該改變為對資料庫的通路</b><b> </b>
<b> boolean okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");</b>
<b> return okOrNot;</b>
<b>5</b><b>、再添加一個測試的應用主類</b><b>UserManageTest</b>
程式設計該類
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class UserManageTest //該類模拟B/S中的控制層元件(如Servlet或者Action類)
public UserManageTest()
<b>ApplicationContext ctx=new FileSystemXmlApplicationContext("SpringApplication.xml"); </b>
<b> UserInfoInterface oneUserInfoManage = (UserInfoInterface) ctx.getBean("oneUserInfoManage");</b>
<b>//</b><b>下面的代碼模拟使用者的表單</b><b> </b>
<b> UserInfoVO oneUserInfo=new UserInfoVO();</b>
<b> oneUserInfo.setUserName("yang");</b>
<b> oneUserInfo.setUserPassWord("1234");</b>
<b> boolean returnResult=oneUserInfoManage.doUserLogin(oneUserInfo);</b>
<b> if(returnResult)</b>
<b> {</b>
<b> System.out.println("</b><b>您登入成功!</b><b>");</b>
<b> }</b>
<b> else</b>
<b> System.out.println("</b><b>您登入失敗!</b><b>");</b>
<b> }</b>
}
public static void main(String[] args)
new UserManageTest();
<b>6</b><b>、在</b><b>*.xml</b><b>中添加我們的業務元件的定義</b><b></b>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- - Application context definition for "springapp" DispatcherServlet. -->
<beans>
<b><bean id="oneUserInfoManage" class="springj2seapp.UserInfoManage"></b>
<b></bean></b>
</beans>
<b>7</b><b>、執行該程式</b>
<b></b><b></b>
将出現下面的狀态
再模拟錯誤登入-----隻需要将測試類中的參數為錯誤的參數
将出現下面的錯誤提示
<b>8</b><b>、再修改</b><b>*.xml</b><b>檔案以提供“屬性和構造”注入</b><b></b>
<bean id="oneUserInfoManage" class="springj2seapp.UserInfoManage">
<constructor-arg>
<b><ref bean="oneUserInfo"/></b>
</constructor-arg>
</bean>
<b><bean id="oneUserInfo" class="springj2seapp.UserInfoVO"></b>
<b> <property name="userName"></b>
<value>yang </value>
</property>
<b><property name="userPassWord"></b>
<value>1234 </value>
<b>9</b><b>、修改</b><b>UserInfomanage</b><b>類</b><b></b>
public class UserInfoManage implements UserInfoInterface
<b>boolean okOrNot;</b>
<b> public UserInfoManage(UserInfoVO oneUserInfo)</b>
<b> </b>
<b> doUserLogin(oneUserInfo);</b>
<b> // TODO </b><b>自動生成構造函數存根</b><b></b>
public boolean doUserLogin(UserInfo oneUserInfo)
String userName=oneUserInfo.getUserName();
String userUserPassWord=oneUserInfo.getUserPassWord();
//下面的代碼實際應該改變為對資料庫的通路
<b>okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");</b>
return okOrNot;
<b>public boolean getUserLogin()</b>
<b>10</b><b>、再修改前面的接口以增加一個新的方法定義</b><b></b>
public boolean doUserLogin(UserInfo oneUserInfo);
<b> public boolean getUserLogin();</b>
11、再修改前面的測試的主類
ApplicationContext ctx=new FileSystemXmlApplicationContext("SpringApplication.xml");
<b>UserInfoInterface oneUserInfoManage = (UserInfoInterface) ctx.getBean("oneUserInfoManage"); </b>
<b> boolean returnResult=oneUserInfoManage.getUserLogin();</b>
if(returnResult)
{
System.out.println("您登入成功!");
}
else
System.out.println("您登入失敗!");
}
{ new UserManageTest();
12、再執行本程式
<b>12</b><b>、再體驗</b><b>IoC</b><b>帶來的靈活性</b><b></b>
<b>(</b><b>1</b><b>)改變屬性參數為錯誤的參數</b><b>----</b><b>模拟登入失敗</b>
<b>(</b><b>2</b><b>)再執行本程式</b><b>-------</b><b>但不需要重新編譯,将出現下面的結果</b><b></b>
<b>13</b><b>、将</b><b>JDK</b><b>中的标準的</b><b>Java </b><b>類注入到我們的業務元件中</b><b></b>
<ref bean="oneUserInfo"/>
<b> <constructor-arg></b>
<b> <ref bean="dateBean"/></b>
<b> </constructor-arg></b>
<bean id="oneUserInfo" class="springj2seapp.UserInfo">
<property name="userName">
<value>yang</value>
<property name="userPassWord">
<b><value>1234</value></b>
<b><bean id="dateBean" class="java.util.Date"/> </b>
<b>14</b><b>、修改業務元件類的代碼以使用該</b><b>Date</b><b>類</b><b></b>
import java.util.Date;
boolean okOrNot;
<b>private Date dateBean=null; </b>
<b>public UserInfoManage(</b>UserInfoVO <b>oneUserInfo,Date dateBean)</b>
<b>this.dateBean=dateBean; </b>
doUserLogin(oneUserInfo);
okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");
<b>String loginTime=dateBean.toLocaleString();</b>
<b> System.out.println("</b><b>您的登入時間是:</b><b>"+loginTime);</b>
public boolean getUserLogin()
<b>15</b><b>、再執行該程式</b><b></b>
本文轉自 weijie@java 51CTO部落格,原文連結:http://blog.51cto.com/weijie/66490,如需轉載請自行聯系原作者