一、概述

原来我们利用工厂来实现灵活的配置。现在利用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. Jmeter如何设置关联

    1.打开飞机网站的第三个设置:2.录制一个登陆和退出脚本,导出为jmx文件:3.Jmeter导入第二步中的文件:4.添加察看结果树,运行一次,会发现一个错误(没有输入正确的usersession)5. ...

  2. eclipse 拨打电话、拨号,发短信

    1.拨打电话,拨号 //拨打电话Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(U ...

  3. linux查看内存和回收内存

    清理前内存使用情况 free -m free -g echo 1 > /proc/sys/vm/drop_caches 清理后内存使用情况 free -m

  4. linux下的tomcat自动退出的问题

    1,环境:mysql+tomcat+linux 2,发现问题:连接池断开连接 No operations allowed after connection closed 连接池断开了,再进行连接就报错 ...

  5. 用代码给TABLE 添加字段,设置属性并编译

    AOTTableFieldList AOTTableFieldList ,TableFieldNode; TableName tableName = "SML_InventTableExt& ...

  6. sorcketlog

    正在运行的API有bug,不能var_dump进行调试,因为会影响client的调用. 将日志写到文件,查看也不方便,特别是带调用栈或大数据结构的文件日志,查看日志十分困难. 这时候用SocketLo ...

  7. php xml 互相转换

    正好昨天才做过类似的需求……几行代码就可以搞定. 如果你使用 curl 获取的 xml data$xml = simplexml_load_string($data);$data['tk'] = js ...

  8. hadoop,hbase,pig安装

    注意端口,办公网只能访问8000-9000的端口 pig的一些lib文件版本 /home/map/hadoop/lib下一些98.5的lib没删除

  9. Bypass pattern lock on Sony Xperia Z2 and backup all data

    Yesterday she came to me with a Sony Xperia Z2 D6503. Guess what? She forgot the pattern so she coul ...

  10. DirectDraw打造极速图形引擎(Alpha混合)

    显然DirectDraw是Windows下写2D图形程序的最好选择,虽然Direct3D也可以写,但是没DirectDraw简单方便,特别对于初学者,一来就接触那么多函数和参数总不是件愉快的事,所以我 ...