首页 > 其他分享 >Spring之控制反转IoC与依赖注入DI讲解

Spring之控制反转IoC与依赖注入DI讲解

时间:2022-08-20 20:46:22浏览次数:65  
标签:DI Spring dao say com hung import IoC public

1. 最终目录

2. 代码示例

(1)BookDaoImpl.java 与 BookServiceImpl.java

package com.hung.dao.Impl;

import com.hung.dao.BookDao;
import com.hung.service.Impl.BookServiceImpl;

public class BookDaoImpl implements BookDao {

	public void say() {
		System.out.println("执行了dao的say()...");
	}
}
package com.hung.service.Impl;

import com.hung.dao.BookDao;
import com.hung.dao.Impl.BookDaoImpl;
import com.hung.service.BookService;

public class BookServiceImpl implements BookService {

	// 5.业务层中使用不使用new方式创建dao对象
	// private BookDaoImpl bookDao = new BookDaoImpl();
	private BookDao bookDao;

	// 7.提供对应的set方法
	public void setBookDao(BookDao bookDao) {
	    this.bookDao = bookDao;
	}

	public void say() {
		System.out.println("执行了service的say()...");
		// 执行dao的say()
		bookDao.say();
	}

}

(2)pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>Spring-IoC</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- spring依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>

        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>

(3)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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--  1.在pom文件导入spring坐标:spring-context;创建此配置文件  -->

    <!--  2.IoC: 配置bean,解耦:解决new对象的藕合问题  -->
    <!--    2.1 除id外,还可以用name设别名,别名可多个,作用和id基本等同 -->
    <bean id="bookDao" name="dao myDao" class="com.hung.dao.Impl.BookDaoImpl"/>
    <!--    2.2 还可以用scope设置bean创建时为非单例
                非单例耗性能,因此:
                适合给容器管理的bean: 表现层、业务层、数据层、工具 对象
                不适合的: 封装的实体对象
    <bean id="bookDao" name="dao myDao" class="com.hung.dao.Impl.BookDaoImpl" scope="prototype" />
    -->
    <bean id="bookService" class="com.hung.service.Impl.BookServiceImpl">
        <!--  6.DI: 配置service与dao的关系  -->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

(4)App.java

package com.hung;

import com.hung.service.BookService;
import com.hung.service.Impl.BookServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
	public static void main(String[] args) {
		/**
		 * 测试
		 * 不用spring
		 * new一个service,并执行它的say()
		 */
		/*
		BookServiceImpl bookService = new BookServiceImpl();
		bookService.say();
		 */

		/**
		 * 使用spring方法
		 */
	    // 3.获取IoC容器
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 4.获取bean,主意:得到的是Object类型,需强转换成BookService类型
		BookService bookService = (BookService) ctx.getBean("bookService");
		bookService.say();
	}
}

 

标签:DI,Spring,dao,say,com,hung,import,IoC,public
From: https://www.cnblogs.com/suihung/p/16608552.html

相关文章

  • redis-hash命令
    一、HDELkeyfield[field...]从key指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。如果key指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将......
  • Spring体现的设计模式
    涉及到的模式工厂设计模式:Spring使用工厂模式通过BeanFactory、ApplicationContext创建bean对象。代理设计模式:SpringAOP功能的实现。单例设计模式:Sprin......
  • 2022 PRML Stock Prediction
    关于RNN(循环神经网络)(简略了解): https://zhuanlan.zhihu.com/p/105383343关于LSTM(长短期记忆网络)以及GRU:Q1:LSTM如何实现长短期记忆?(《百面深度学习》p54)一般的RNN(循......
  • Spring Bean生命周期
    Bean的生命周期Bean容器找到配置文件中SpringBean的定义。Bean容器利用JavaReflectionAPI创建一个Bean的实例。如果涉及到一些属性值利用set()方法设置......
  • 33. Redis---哨兵模式
    1.前言在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且......
  • 32. Redis---主从模式
    1.前言在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务......
  • 31. Redis---AOF持久化
    Redis事务的目的是方便用户一次执行多个命令。执行Redis事务可分为三个阶段:开始事务命令入队执行事务1.Redis事务特性Redis事务具有两个重要特性:1)单独的隔......
  • Linux安装redis及入门
    1.获取redis资源wgethttp://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压tar-xzvfredis-4.0.8.tar.gz 3.安装进入到redis目录:cdredis-4.0.8......
  • 【SpringBoot】定时任务
    SpringBoot实现定时任务SpringBoot创建定时任务,目前主要有以下三种实现方式:基于注解(@Scheduled):基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上......
  • 30. Redis---事务(24补充)
    1.前言Redis事务的目的是方便用户一次执行多个命令。执行Redis事务可分为三个阶段:开始事务命令入队执行事务2.Redis事务特性Redis事务具有两个重要特性:1)单......