SpringBoot学习 (二)— 依赖注入

学习一下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
 */
@Service
public 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
 */
@Service
public class UseDiService {

    @Autowired
    private 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
 
 
 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值