上一篇介绍了一些理解和概念,本篇结合代码谈谈,本篇适合小白代码在 github 仓库java
[toc]git
先来个 Demo 感觉一下,代码是基于 Maven 构建的,若是不熟悉 maven 能够查看公众号 JavaPub 目录学习。
在 Idea 新建 Maven 项目,目录结构如图github
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>javapub.rodert</groupId> <artifactId>firstSpringProject</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.2.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.7.RELEASE</version> </dependency> </dependencies> </project>
src
目录下建立一个名为 javapub.rodert
的包,而后在该包中建立一个名为 PersonDao
的接口,并在接口中添加一个 add()
方法package javapub.rodert; /** * @author wangshiyu rodert * @date 2020/7/2 20:13 * @description */ public interface PersonDao { public void add(); }
在 javapub.rodert
包下建立 PersonDao
的实现类 PersonDaoImpl
spring
package javapub.rodert; /** * @author wangshiyu rodert * @date 2020/7/2 20:14 * @description */ public class PersonDaoImpl implements PersonDao { public void add() { System.out.println("执行成功!!!"); } }
Spring 配置文件是整合 Spring 的核心apache
<?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"> <bean id="personDao" class="javapub.rodert.PersonDaoImpl"/> </beans>
新建测试类微信
package javapub.rodert; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author wangshiyu rodert * @date 2020/7/2 20:15 * @description */ public class PersonDaoTest { @Test public void test1(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml"); PersonDao personDao = (PersonDao) applicationContext.getBean("personDao"); personDao.add(); } }
返回结果:app
执行成功!!!
使用 JUnit 测试运行测试方法,运行成功。在程序执行时,对象的建立并非经过 new
一个类完成的,而是经过 Spring 容器管理实现的。这就是 Spring IoC
(控制反转) 容器思想的工做机制。框架
依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念。maven
当某个 Java 实例须要另外一个 Java 实例时,传统的方法是由调用者建立被调用者的实例(例如,使用 new
关键字得到被调用者实例),而使用 Spring 框架后,被调用者的实例再也不由调用者建立,而是由 Spring 容器建立,这称为控制反转。学习
指 IoC 容器使用 setter 方法注入被依赖的实例。经过调用无参构造器或无参 static 工厂方法实例化 bean 后,调用该 bean 的 setter 方法,便可实现基于 setter 的 DI。
指 IoC 容器使用构造方法注入被依赖的实例。基于构造器的 DI 经过调用带参数的构造方法实现,每一个参数表明一个依赖。
@Autowired
声明:参考来源互联网,有任何争议能够留言。站在前人的肩上,咱们才能看的更远。本教程纯手打,致力于最实用教程,但愿多多转发支持,对我真的很重要。
欢迎来我公众号,但愿能够结识你,更多原创PDF,微信搜索:JavaPub,回复:【666】,也能够催更。有任何问题均可以来谈谈 !
下篇SSM整合