java 依赖注入的好处_体验Spring的“依赖注入”的优点

1、添加一个接口

名称为UserInfoInterface,包名称为springj2seapp

8c861733e5a4740b0eb97188a7fa82b9.png

在该接口中添加一个一个业务方法

package springj2seapp;

public interface UserInfoInterface

{

publicboolean doUserLogin(UserInfoVO oneUserInfo);

}

ec1037759ec3c828bce3eaca570c88a1.png

2、再添加一个实现类

类名称为UserInfoManage,包名称为springj2seapp实现UserInfoInterface

3d947cb57ac22553afff9b2db6d3f4e1.png

ba3f13d0a279e965de21a13aa7830895.png

3、再增加一个业务实体UserInfoVO类

6431ba4b57745f402700ba0a5852037b.png

在该VO类中新增两个成员

private String userName;

privateString userPassWord;

5b8caf4d176c46d468f43da4b2ecc772.png

eb881380262f046b1d1d3b3becdab585.png

最后将产生出下面的代码

package springj2seapp;

public class UserInfoVO {

private String userName=null;

private String userPassWord=null;

public UserInfoVO()

{

super();

// TODO自动生成构造函数存根

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getUserPassWord() {

return userPassWord;

}

public void setUserPassWord(String userPassWord) {

this.userPassWord = userPassWord;

}

}

4、编程前面的UserInfoManage类实现功能

package springj2seapp;

public class UserInfoManage implements UserInfoInterface {

public UserInfoManage()

{

super();

// TODO自动生成构造函数存根

}

publicboolean doUserLogin(UserInfo oneUserInfo)

{

String userName=oneUserInfo.getUserName();

String userUserPassWord=oneUserInfo.getUserPassWord();

//下面的代码实际应该改变为对数据库的访问

boolean okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");

return okOrNot;

}

}

5、再添加一个测试的应用主类UserManageTest

6ed68ce0c6f491b8062f48d4d0903feb.png

编程该类

package springj2seapp;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class UserManageTest//该类模拟B/S中的控制层组件(如Servlet或者Action类)

{

public UserManageTest()

{

super();

ApplicationContext ctx=newFileSystemXmlApplicationContext("SpringApplication.xml");

UserInfoInterface oneUserInfoManage = (UserInfoInterface) ctx.getBean("oneUserInfoManage");

//下面的代码模拟用户的表单

UserInfoVO oneUserInfo=new UserInfoVO();

oneUserInfo.setUserName("yang");

oneUserInfo.setUserPassWord("1234");

boolean returnResult=oneUserInfoManage.doUserLogin(oneUserInfo);

if(returnResult)

{

System.out.println("您登录成功!");

}

else

{

System.out.println("您登录失败!");

}

}

public static void main(String[] args)

{

new UserManageTest();

}

}

6、在*.xml中添加我们的业务组件的定义

7、执行该程序

168e4f441e732f62fa2c7540589244c4.png

将出现下面的状态

03f4dfa50498ab616d5a976b93c048fd.png

再模拟错误登录-----只需要将测试类中的参数为错误的参数

8a02c1c905539ca41ce9279f63ff4091.png

将出现下面的错误提示

4c53922e1e9b296f7379789288ef398f.png

8、再修改*.xml文件以提供“属性和构造”注入

yang

1234

9、修改UserInfomanage类

package springj2seapp;

public class UserInfoManage implements UserInfoInterface

{

boolean okOrNot;

public UserInfoManage()

{

super();

// TODO自动生成构造函数存根

}

public UserInfoManage(UserInfoVO oneUserInfo)

{

doUserLogin(oneUserInfo);

// TODO自动生成构造函数存根

}

publicboolean doUserLogin(UserInfo oneUserInfo)

{

String userName=oneUserInfo.getUserName();

String userUserPassWord=oneUserInfo.getUserPassWord();

//下面的代码实际应该改变为对数据库的访问

okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");

return okOrNot;

}

public boolean getUserLogin()

{

return okOrNot;

}

}

10、再修改前面的接口以增加一个新的方法定义

package springj2seapp;

public interface UserInfoInterface

{

publicboolean doUserLogin(UserInfo oneUserInfo);

public boolean getUserLogin();

}

11、再修改前面的测试的主类

package springj2seapp;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class UserManageTest//该类模拟B/S中的控制层组件(如Servlet或者Action类)

{

public UserManageTest()

{

super();

ApplicationContext ctx=newFileSystemXmlApplicationContext("SpringApplication.xml");

UserInfoInterface oneUserInfoManage = (UserInfoInterface) ctx.getBean("oneUserInfoManage");

//下面的代码模拟用户的表单

boolean returnResult=oneUserInfoManage.getUserLogin();

if(returnResult)

{

System.out.println("您登录成功!");

}

else

{

System.out.println("您登录失败!");

}

}

public static void main(String[] args)

{new UserManageTest();

}

}

12、再执行本程序

b1185cd59dbd58fbf1ee550a42e52bd7.png

12、再体验IoC带来的灵活性

(1)改变属性参数为错误的参数----模拟登录失败

e83a1bccdcfe4c89c04f4c381981180a.png

(2)再执行本程序-------但不需要重新编译,将出现下面的结果

23b7a64636b43d28b6738cd1c88b562a.png

13、将JDK中的标准的Java类注入到我们的业务组件中

yang

1234

14、修改业务组件类的代码以使用该Date类

package springj2seapp;

import java.util.Date;

public class UserInfoManage implements UserInfoInterface

{

boolean okOrNot;

private Date dateBean=null;

public UserInfoManage()

{

super();

// TODO自动生成构造函数存根

}

public UserInfoManage(UserInfoVOoneUserInfo,Date dateBean)

{

this.dateBean=dateBean;

doUserLogin(oneUserInfo);

// TODO自动生成构造函数存根

}

publicboolean doUserLogin(UserInfo oneUserInfo)

{

String userName=oneUserInfo.getUserName();

String userUserPassWord=oneUserInfo.getUserPassWord();

//下面的代码实际应该改变为对数据库的访问

okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");

String loginTime=dateBean.toLocaleString();

System.out.println("您的登录时间是:"+loginTime);

return okOrNot;

}

public boolean getUserLogin()

{

return okOrNot;

}

}

15、再执行该程序

227038101d7489abbe8ee2f90e11f10a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值