一、概述

原来我们利用工厂来实现灵活的配置。现在利用Spring以后把这个交给了IoC容器管理。我们只要在XML文件上配上就可以了这样的话就节省了很多开发时间我们不需要知道后面的有多少只要动态的配上类就可以了下面就给大家做一个例子

二、代码展示。

文件目录如下图:

需要引用的jar包:

spring.jar

Lib/log4j/log4j.jar

Lib/jakarta-commons/commons-logging.jar

需要引用的文件

Log4j.properties

下面是代码:

UserDao.java

	package com.bjpowernode.spring.dao;

	public interface UserDao {

		public void addUser(String userName,String password);

	}

UserDao4MySqlImpl.java

	package com.bjpowernode.spring.dao;

	public class UserDao4MySqlImpl implements UserDao {

		public void addUser(String userName, String password) {
// TODO Auto-generated method stub
System.out.println("UserDao4MySqlImpl.addUser()");
} }

UserDao4OrcleImpl.java

	package com.bjpowernode.spring.dao;

	public class UserDao4OrcleImpl implements UserDao {

		public void addUser(String userName, String password) {
// TODO Auto-generated method stub
System.out.println("UserDao4OrcleImpl.addUser()");
} }

UserManager.java

	package com.bjpowernode.spring.manager;

	public interface UserManager {

		public void addUser(String userName,String password);

	}

UserManagerImpl.java

	package com.bjpowernode.spring.manager;

	import com.bjpowernode.spring.dao.UserDao;

	public class UserManagerImpl implements UserManager{

		private UserDao userDao;

		public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} // public UserManagerImpl(UserDao userDao) {
//
// this.userDao = userDao;
// } public void addUser(String userName, String password) {
// TODO Auto-generated method stub
// //由我们的应用程序负责服务定位
// UserDao userDao=new UserDao4MySqlImpl();
userDao.addUser(userName, password);
} }

Client.java

	package com.bjpowernode.spring.client;

	import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.bjpowernode.spring.dao.UserDao4MySqlImpl;
import com.bjpowernode.spring.manager.UserManager;
import com.bjpowernode.spring.manager.UserManagerImpl; public class Client { /**
* @param args
*/
public static void main(String[] args) {
BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager=(UserManager) factory.getBean("userManager"); userManager.addUser("张三", "123");
// // TODO Auto-generated method stub
// UserManager userManager=new UserManagerImpl(new UserDao4MySqlImpl());
// userManager.addUser("张三", "1231");
} }

applicationContext.xml

	<?xml version="1.0" encoding="UTF-8"?>

	<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="userDao4MySql" class="com.bjpowernode.spring.dao.UserDao4MySqlImpl"/> <bean id="userDao4Orcle" class="com.bjpowernode.spring.dao.UserDao4OrcleImpl"/> <bean id="userManager" class="com.bjpowernode.spring.manager.UserManagerImpl">
<!-- <constructor-arg ref="userDao4MySql" /> -->
<property name="userDao" ref="userDao4MySql"/>
</bean> </beans>

运行结果:

三、比较

与原来用工厂写的区别就在于UserManagerImpl.java和Client.java这两个类的写法不一样原来这两个类这样写

UserManagerImpl.java

	package com.bjpowernode.spring.manager;

	import com.bjpowernode.spring.dao.UserDao;
import com.bjpowernode.spring.dao.UserDao4MySqlImpl; public class UserManagerImpl implements UserManager{ public void addUser(String userName, String password) {
// TODO Auto-generated method stub
//由我们的应用程序负责服务定位
UserDao userDao=new UserDao4MySqlImpl();
userDao.addUser(userName, password);
} }

Client.java

	package com.bjpowernode.spring.client;

	import com.bjpowernode.spring.manager.UserManager;
import com.bjpowernode.spring.manager.UserManagerImpl; public class Client { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
UserManager userManager=new UserManagerImpl();
userManager.addUser("张三", "1231");
} }

四、总结

Spring给我们带来了很大的便利这样让我们开发的时候对象与对象之间进行了解耦。让我们维护起来更加方便,当需求修改的时候我们只要修改一下配置文件,添加对象就可以了不用修改写好的代码。

菜鸟学习Spring——第一个例子的更多相关文章

  1. 菜鸟学习Spring——60s配置XML方法实现简单AOP

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

  2. ElasticSearch 5学习(5)——第一个例子(很实用)

    想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...

  3. ElasticSearch 5学习(5)——第一个例子

    想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...

  4. 学习spring第一天

    Spring第一天笔记   1. 说在前面 怎样的架构的程序,我们认为是一个优秀的架构? 我们考虑的标准:可维护性好,可扩展性好,性能. 什么叫可扩展性好? 答:就是可以做到,不断的增加代码,但是可以 ...

  5. MXNet学习~第一个例子~跑MNIST

    反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...

  6. 菜鸟学习Spring Web MVC之一

    ---恢复内容开始--- 当当当!!沉寂两日,学习Spring Web MVC去了.吐槽:近日跟同行探讨了下,前端攻城师,左肩担着设计师绘图,右肩担着JAVA代码?!我虽设计过UI,但这只算是PS技巧 ...

  7. 菜鸟学习spring IOC有感

     一.spring IOC思想引入 事实上对于刚開始学习的人来说,在学习IOC的时候确实有点困难,主要是掌握其思想方面存在一丢丢的障碍,可是假设可以跨过这个障碍,则可以高速掌握当中的思想了.单从字 ...

  8. 菜鸟学习Spring Web MVC之二

    有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...

  9. 菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式

    一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架 ...

随机推荐

  1. int型的数到底最大值是多少?

    本文摘自:http://blog.csdn.net/friendbaby/article/details/6822690 刚才在百度知道上看见一个网友问int型的数最大能存多少.这个问题其实计算机系统 ...

  2. 慕课网-安卓工程师初养成-4-9 Java循环语句之 for

    来源:http://www.imooc.com/code/1425 Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换. 语法: 执行过程: ...

  3. 全局变量 urllib模块 json模块

    1.vars()  查看一个.py文件中的全局变量 print(vars()) #重点 __name__': '__main__ '__file__': 'C:/Users/lenovo/Pychar ...

  4. url 参数的加号变成空格处理

    今天在调试客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了. 解决方法如下: 方法一.修改客户端 将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这 ...

  5. linux配置tns

    .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. .sqlnet.ora确定解析方式 .listener.ora上设SID_NAME,通常用于JDBC访问,对应的错误 ...

  6. [设计模式 3] 用设计模式的眼光看MVC框架

    导读:之前一直在区分MVC和设计模式的区别,但是,既然有些人认为MVC是一种设计模式,那么它们之间肯定是有共通之处的.所以,本篇博客,就用设计模式的眼光来看MVC框架.仅是本人对于MVC的粗鄙看法,还 ...

  7. CentOS6.5 ssh远程连接缓慢解决方法

    UseDNS no GSSAPIAuthentication no 1.适用命令及方案如下:[远程连接及执行命令]ssh -p22 root@10.0.0.19ssh -p22 root@10.0.0 ...

  8. C# 最原始的tree 递归使用

    ; i < dr.Rows.Count; i++)             {                 )                 {                     n ...

  9. PE查看器

    主要界面如下: 主要代码如下: BOOL CPEParseDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标.当应用程序主窗口不是对 ...

  10. C#处理Excel

    C#处理Excel C#处理Excel 前言 OleDb 具体操作 NPOI 具体操作 Excel C# NPOI OleDb 前言 最近需要对Excel进行加密解密操作,本身是一个简单的事情,通过 ...