Spring里的IOC例子
来源:互联网 发布:js modem 电话 编辑:程序博客网 时间:2024/05/17 21:38
IOC称为控制反转。反转,也就是把任务交给别人,即IOC容器。关系都自己来维护,如果有很多对象,都自己来做。现在写一工厂,自己来解析文件。现在反转了,这些事你不用做了,交给IOC容器。IOC提供了相应的配置,我们可以把这种依赖关系配制上就可以了。只要把依赖关系配制好就可以了。例如:下面将要说要的,UserManager依赖于UserDaoImpl,这些所有的业务对象,关系都给配制上。那么Spring会自动地把UserDaoImpl给new好,把UserManager给new好,然后调用UserManager构造函数。把自动new好的UserDaoImpl放进去。当然,自动放进去是有前提的,你的UserManager要提供构造函数或UserManager的实现要提供set方法,即setUserDao方法,传送一个userDao过去。它就能调用你的set方法,把new好的UserDao给你,这个给的过程就称为注入,即DI,依赖注入。你主动的找一件东西,你是有依赖关系的,而现在是,它主动的给你,是没有依赖关系的。这就是IOC容器。除了DI实现,还有一种实现是依赖查找。Spring没有侵入性,主要就体现在这里。你提供标准的构造函数,标准的set方法,我就可以把对象new好,设过来。
首先,我们先建一个java项目。
项目里有三个包,如下:
1.package com.test.spring.dao
dao下有两个类,一个是接口UserDao,还有一个是UserDao的实现UserDaoImpl。
package com.test.spring.dao;public interface UserDao {public void save(String username, String password);}
package com.test.spring.dao;public class UserDaoImpl implements UserDao {public void save(String username, String password) {System.out.print("-----------UserDaoImpl.save()--------------");}}
2.package com.test.spring.manager
manager即是业务层,一个是接口UserManager,还有一个是UserManager的实现UserManagerImpl。
package com.test.spring.manager;public interface UserManager {public void save(String username,String password);}
package com.test.spring.manager;import com.test.spring.dao.UserDao;public class UserManagerImpl implements UserManager {private UserDao userDao; //public UserManagerImpl(UserDao userDao) {//this.userDao = userDao;//此处用的是构造方法//}public void save(String username, String password) {this.userDao.save(username, password);} public void setUserDao(UserDao userDao{ this.userDao=userDao; //一般都用set方法 }
3.package com.test.spring.client
client即客户端。
package com.test.spring.client;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.test.spring.dao.UserDaoImpl;import com.test.spring.manager.UserManager;import com.test.spring.manager.UserManagerImpl;public class Client {public static void main(String[] args) {//UserManager userManager=new UserManagerImpl(new UserDaoImpl());//userManager.save("张三", "123");BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");UserManager userManager = (UserManager)factory.getBean("userManager");userManager.save("张三", "123");}}
引入Spring依赖库里的解压好的jar包,三个即可,即:spring.jar、commons-logging.jar、log4j-1.2.14.jar
在src下面,还要建applicationContext.xml和log4j.properties,此处这两个文件可以在Spring的jar包下面直接拷贝过来即可。
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" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx ">http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!--即处id是唯一的标识--> <bean id="userDaoImpl" class="com.test.spring.dao.UserDaoImpl" /><bean id="userManager" class="com.test.spring.manager.UserManagerImpl"><constructor-arg ref="userDaoImpl" /></bean></beans>
log4j.properties
log4j.rootLogger=INFO, stdout,logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.file=${project.root}/WEB-INF/petstore.log Loglog4j.appender.logfile.MaxFileSize=512KB log4j.appender.logfile.MaxBackupIndex=3 log4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
- Spring里的IOC例子
- 简单的spring ioc例子
- 戏说Spring里的【IoC与DI】
- 戏说Spring里的【IoC与DI】
- spring里的IOC和Aop扩展
- Spring IOC简单例子
- 简单Spring IOC例子
- Spring ioc 例子
- IOC、Spring的IOC
- spring IOC原理诠释的比较好的例子--perfect
- 秋天里的春天-spring笔记(二):IoC
- Spring学习笔记2--反向控制(IoC)的例子
- 懒得笔记2 spring DI IOC 的一个例子
- spring ioc的使用
- Spring的IoC
- Spring的IoC解析
- Spring的IOC用法
- 关于spring的IOC
- the evil cmake -- string concatenation
- 推荐系统:主要推荐方法
- Java GUI之创建一个长宽尺寸为屏幕尺寸一半的框架,并显示在屏幕的正中心
- 看图学中文版VS2010 Workflow 4.0 (三)
- JOJ2573:Product of two primes
- Spring里的IOC例子
- 苹果官方文档-线程编程指南之一:介绍
- the evil VC -- Visual C++ project, macro, output file
- PHP内核介绍及扩展开发指南—基础知识
- 键盘符号的英文读法
- PHP内核介绍及扩展开发指南—Extensions 的编写
- The evil CMake -- File system, path notation, slash
- 出租房的照片
- 强连通分量 Tarjan算法