将Dao层注入到Service层

三层架构:界面层,业务逻辑层,数据访问层
三层之间的交互
用户使用界面层(Controller)—业务逻辑层(Service)—数据访问层(Dao层)----数据库(mysql)
三层对应的处理框架:
界面层------springMVC
业务逻辑层-------spring
数据访问层------mybatis
    由上面的过程可以知道业务逻辑层会调用Dao层,所以我们可以直接将依赖关系的管理交给spring维护,在Service类需要用到Dao类的对象,由spring为我们提供,只需在配置文件中说明关系的维护;
    所以我们需要在spring容器中注入Dao类,这样以后在调用Service层的时候会在内部连带着调用Dao层,下面介绍两种注入方法:set方法和有参构造方法

set方法注入:

xml文件里

 <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
 <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
 	 <property name="userDao" ref="userDao"/>
 </bean> 

UserServiceImpl类中

public class UserServiceImpl implements UserService {
    
    
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
    
    
        this.userDao=userDao;
    }
 }

    上边的property标签中name表示调用setUserDao方法,ref表示引用容器内部标签userDao,所以这句话的意思是,调用setUserDao方法,将容器内部的userDao作为参数传入到userServiceImpl中。这样也就完成了依赖注入。

有参构造方法注入

xml文件中

 <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
        <constructor-arg name="userDao" ref="userDao"/>
 </bean>

UserServiceImpl类中

public class UserServiceImpl implements UserService {
    
    
    private UserDao userDao;
    public UserServiceImpl(UserDao userDao) {
    
    
        this.userDao=userDao;
    }
    public UserServiceImpl() {
    
    

    }
 }

    constructor-arg标签里的name表示构造方法的参数名称,ref表示参数,所以到UserServiceImpl类中就会将userDao传入到UserServiceImpl的有参构造里面,这样也就完成了依赖注入。

猜你喜欢

转载自blog.csdn.net/weixin_51656756/article/details/121177455
今日推荐