您的位置:首页 > 编程语言 > Java开发

SpringBoot学习 (二)— 依赖注入

2017-03-11 16:23 323 查看

学习一下SpringBoot 之依赖注入

附上一篇很好的关于依赖注入的博客:http://blog.csdn.net/lisongjia123/article/details/52134396依赖注入就是Spring IoC容器创建bean(实例),不管是依赖注入,还是控制反转,都说明Spring采用动态、灵活的方式来管理各种对象。对象与对象之间的具体实现互相透明。在理解依赖注入之前,看如下这个问题在各种社会形态里如何解决:一个人(Java实例,调用者)需要一把斧子(Java实例,被调用者)。(1)原始社会里,几乎没有社会分工。需要斧子的人(调用者)只能自己去磨一把斧子(被调用者)。对应的情形为:Java程序里的调用者自己创建被调用者。(2)进入工业社会,工厂出现。斧子不再由普通人完成,而在工厂里被生产出来,此时需要斧子的人(调用者)找到工厂,购买斧子,无须关心斧子的制造过程。对应Java程序的简单工厂的设计模式。(3)进入“按需分配”社会,需要斧子的人不需要找到工厂,坐在家里发出一个简单指令:需要斧子。斧子就自然出现在他面前。对应Spring的依赖注入。也就说我们传统创建对象是 Person = new Person()  ,关键字new创建bean现在我们创建bean通过依赖注入的方式

一、创建一个maven工程

二、 在pom.xml添加Spring的依赖

<?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>com.youhu</groupId>
<artifactId>spring4_di</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>

</plugin>

</plugins>

</build>

</project>
然后就看到idea自动导入了spring需要的包

三、 建四个class(代码如下)

DiConfig.java

package com.youhu.spring4_di.di;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;/*** @Description: TODO* @Author:You.Hu* @Create:2017-03-11 16:51*/@Configuration@ComponentScan("com.youhu.spring4_di.di")public class DiConfig {}

FunctionService.java

package com.youhu.spring4_di.di;import org.springframework.stereotype.Service;/*** @Description: diservice* @Author:You.Hu* @Create:2017-03-11 16:46*/@Servicepublic class DiService {public String diFunctin(){return "this di service!";}}

UseDiService.java

package com.youhu.spring4_di.di;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;/*** @Description: UseDiService* @Author:You.Hu* @Create:2017-03-11 16:48*/@Servicepublic class UseDiService {@Autowiredprivate DiService diService;public String useDiFunction(){return diService.diFunctin();}}

Main.java

package com.youhu.spring4_di.di;import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** @Description: main* @Author:You.Hu* @Create:2017-03-11 16:52*/public class Main {public static void main (String [] args){//1.获取context上下文(作为Spring容器)AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DiConfig.class);//2.创建实例(注意并不是通过new的方式)UseDiService useDiService= context.getBean(UseDiService.class);System.out.println(useDiService.useDiFunction());context.close();}}
注解介绍:@Service当前类是一个由Spring管理的一个bean (在业务逻辑service层使用)@Autowired 是把DiService的实体注入到UseDiService中@Configuration 当前类是一个配置类@ComponentScan 自动扫描com.youhu.spring4_di.di下所有使用@service、@Repository、@Controller的类注册为bean(实例)使用AnnotationConfigApplicationContext来作为Spring容器 然后获得UseDiService的bean(实例)

五、运行结果

我们通过依赖注入的方式实现调用!简单实用附上源码地址 点击打开链接一起学习SpringBoot

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息