Spring详解(四)IOC容器-对象依赖关系

对象依赖关系

DI: 依赖注入

  • 通过构造
  • 通过Set方法对属性进行注入
  • 通过p命名空间
  • 自动装配
  • 注解
使用Set方法对属性进行注入

以常见的三层架构Action , Service, Dao 示例

项目结构:


1.png

applicationContext.xml文件:

<?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:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd">
                
    <!-- Action -->
    <bean id="UserAction" class="com.iotek.second.UserAction">
        <property name="UserService" ref="UserService"></property>
    </bean>
    
    <!-- Service -->
    <bean id="UserService" class="com.iotek.second.UserService">
        <property name="UserDao" ref="UserDao"></property>
    </bean>
    
    <!-- Dao -->
    <bean id="UserDao" class="com.iotek.second.UserDao"></bean>
</beans>

UserAction.java:

package com.iotek.second;

public class UserAction {
    UserService userService;
    
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public void addUser() {
        userService.save();
    }
}

UserService.java文件:

package com.iotek.second;

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

UserDao.java文件:

package com.iotek.second;

public class UserDao {
    public void save() {
        System.out.println("保存数据库成功");
    }
}

UserTest.java文件:

package com.iotek.second;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserTest {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("UserAction");
        userAction.addUser();
    }

}

当然,配置xml文件也可以使用内部bean的方式,如下

<!-- 内部bean -->
    <bean id="UserAction2" class="com.iotek.second.UserAction">
        <property name="UserService">
            <bean class="com.iotek.second.UserService">
                <property name="UserDao">
                    <bean class="com.iotek.second.UserDao"></bean>
                </property>
            </bean>
        </property>
    </bean>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,155评论 19 139
  • 来源:关于Spring IOC (DI-依赖注入)你需要知道的一切作者:zejian Dao层(AccountDa...
    杨井阅读 10,711评论 0 27
  • 一、 Spring技术概述1、什么是Spring : Spring是分层的JavaSE/EE full-stack...
    luweicheng24阅读 4,037评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,449评论 18 399
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,153评论 6 342

友情链接更多精彩内容