一般来说,业务逻辑是分层的
假设我们现在有服务层和持久层。
持久层IDao和实现类DaoImpl:
public interface IDao {
public void save(String data);
}
public class DaoImpl implements IDao {
public void save(String data) {
System.out.println("save to database:" + data);
}
}
服务层接口IService和实现类ServiceImpl
public interface IService {
public void save(String data);
}
public class ServiceImpl implements IService {
private IDao iDao;
public void setiDao(IDao iDao) {
this.iDao = iDao;
}
public void save(String data) {
System.out.println("sovle data");
iDao.save(data);
}
}
可以看到,其ServiceImpl类中存在对持久层IDao的引用。也就是说ServiceImpl中存在IDao这个对象。Service通过调用持久层的方法来保存数据的意思。
所以,这么一种关系通过配置文件应该怎么表示呢?我们想要表达我们有两个接口,而接口的实现类也分别给出了,并且接口之间存在引用的关系。
首先是我们有两个接口IService和IDao,他们的实现类分别是ServiceImpl和DaoImpl。我们要表达这么一个关系。
在配置文件中,我们就需要这么做:
<bean id="iService" class="Spring.test1.ServiceImpl"></bean>
<bean id="iDao" class="Spring.test1.DaoImpl"></bean>
在Spring容器中,所有对象都称为bean对象。
所以两个接口分别对应两个bean标签。
可以看到,id为iService的bean的实现类是Spring.test1.ServiceImpl这个类。id为iDao的bean的实现类是Spring.test1.DaoImpl这个类。
这和我们一开始的期望是一样的。(当然,如果不使用面向接口的方式,单独的类的实现也可以是这么一个方式)
在我看到,这是这么一个意思&