您的位置:首页 > 编程语言 > Java开发

Java中的SSH框架之spring(1)

2016-01-09 15:45 656 查看
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();
}
}


目录结构如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring java