框架技术--S2SH框架整合(spring部分)No 1

来源:互联网 发布:java中图片上传 编辑:程序博客网 时间:2024/05/29 17:45

spring框架核心和思想是控制反转、依赖注入。

是控制反转、依赖注入(IOC、DI):由容器来管理对象之间的依赖关系叫做控制反转或依赖注入。

 

下面是一个使用spring框架简单的例子,用来描述依赖注入。

1、首先需要引入JAR包: spring.jar、log4j-1.2.14.jar、commons-logging.jar。

2、创建web项目,增加以下几个packege:

 

3、在Dao包中增加1个接口,2个实现类。

接口UserDao

package spring.Dao;public interface UserDao {public void save();}

实现类FirstUserDao

package spring.Dao;public class FirstUserDao implements UserDao {public void save() {// TODO Auto-generated method stubSystem.out.println("----------firstUserDao-------------");}}

实现类SecondUserDao

package spring.Dao;public class SecondUserDao implements UserDao {public void save() {// TODO Auto-generated method stubSystem.out.println("----------secondUserDao-------------");}}

4、在service包中增加1个接口,1个实现类

接口UserService

package spring.Service;public interface UserService {public void save();}

实现类UserServiceImpl

package spring.Service;import spring.Dao.FirstUserDao;import spring.Dao.UserDao;public class UserServiceImpl implements UserService {private UserDao userDao;public void save() {// TODO Auto-generated method stubthis.userDao.save();}public void setUserDao(UserDao userDao) {this.userDao = userDao;}}

5、在src目录下增加spring的配置文件applicationContext.xml,在配置文件中ID的值是不能重复的,xml中通过<property name="userDao" ref="SecondUserDao>行为userdao注入SecondUserDao这个类。

因为UserServiceImpl类中save方法中调用userDao.save(),因为UserDao是一个接口,他对应有2个实现类,这时我们需要知道调用的是该接口的哪个实现类,没用框架的话我们会通过UserServiceImpl.setUserDao(“对应的实现类”)来实现,但使用spring框架后这个操作就由xml配置进行,这个也就是spring的依赖注入的概念。

<?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="FirstUserDao" class="spring.Dao.FirstUserDao"></bean><bean id="SecondUserDao" class="spring.Dao.SecondUserDao"></bean><bean id="UserServiceImpl"  class="spring.Service.UserServiceImpl"><property name="userDao" ref="SecondUserDao"></property></bean></beans>

6、在test包下,增加测试代码,ClassPathXmlApplicationContext这个类是检查当前class文件路径中是否存在applicationContext.xml。

package spring.test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import spring.Service.UserServiceImpl;public class test {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubBeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");UserServiceImpl userServiceImpl = (UserServiceImpl) factory.getBean("UserServiceImpl");userServiceImpl.save();}}

目录结构如图:

 




原创粉丝点击