Java中的SSH框架之spring(1)

spring框架核心和思想是控制反转、依赖注入。
由容器来管理对象之间的依赖关系叫做控制反转或依赖注入。
控制反转(IoC):应用本身不负责依赖对象的创建和维护,依赖对象的创建和维护由外部容器负责,这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转;
依赖注入(DI):即在运行期间由外部容器动态地将依赖对象注入到组件中。

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 stub  
        System.out.println("----------firstUserDao-------------");  
    }  
  }  

实现类SecondUserDao:

package spring.Dao;  
public class SecondUserDao implements UserDao {  
    public void save() {  
        // TODO Auto-generated method stub  
        System.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 stub  
        this.userDao.save();  
    }  

    public void setUserDao(UserDao userDao) {  
        this.userDao = userDao;  
    }  
}  

5、在src目录下增加spring的配置文件applicationContext.xml,在配置文件中ID的值是不能重复的,xml中通过行为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 stub  
        BeanFactory factory = new ClassPathXmlApplicationContext(  
                "applicationContext.xml");  
        UserServiceImpl userServiceImpl = (UserServiceImpl) factory  
                .getBean("UserServiceImpl");  
        userServiceImpl.save();  
    }  
}  

目录结构如图:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值