1. Spring4.1-依赖注入

原创 2015年11月18日 22:57:06

1.1 声明bean

  • 使用上例建立的testMavenSpring项目,将pom.xml文件中的 <spring-framework.version>3.2.3.RELEASE</spring-framework.version>修改为4.1.5.RELEASE, 然后项目->右键->maven->update project;
  • spring利用@Configuration,@Component,@Service,@Repository,@Controller注解在一个java类上声明是spring容器的bean;
  • 使用@Configuration,@Component,@Service,@Repository,@Controller任意一个在类上效果是等同的,不同的名称是为了更好的标志类的角色和功能,避免代码维护者混淆代码作用;
  • 那我们使用这四个注解的准则是什么呢?
    • @Configuration 声明是一个配置bean
    • @Component 系统组件,没有明确的角色;
    • @Service 在业务逻辑层(service层)使用;
    • @Repository 在数据访问层(dao层)使用;
    • @Controller 在展现层(MVC->Spring MVC)使用;

1.2 注入bean

  • 可以使用@Autowired,@Inject(JSR-330),@Resource(JSR-250)注入用@Component,@Service,@Repository,@Controller(当然包括xml声明的或者用@Bean声明的bean)声明的bean;
  • @Autowired,@Inject,@Resource在一般情况下是通用的;
  • @Autowired,@Inject,@Resource可注解在set方法上或者属性上;我习惯注解在属性上,代码更少层次更清晰;

1.3 示例

1.3.1 新建待注入的java类

package com.wisely.di;

import org.springframework.stereotype.Service;

@Service//写为@Component,@Controller,@Repository效果相同,视具体情况使用
public class Demo1Service {

    public String sayHello(String word ){
        return "Hello "+word;
    }
}

1.3.2 新建被注入的java类

package com.wisely.di;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class Demo2Service {
    @Autowired //注入Demo1Service,还可使用JavaEE的@Inject(JSR-330),@Resource(JSR-250)效果相同
    Demo1Service demo1Service;
    public String callDemo1SayHello(String word){
        return demo1Service.sayHello(word);
    }

}

1.3.3 测试

package com.wisely.di;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;


public class Main {

    public static void main(String[] args) {
        //设定此包下的类被注册成spring的bean,包含@Configuration,@Component,@Service,@Repository,@Controller
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext("com.wisely.di");
        Demo2Service demo2Service = context.getBean(Demo2Service.class);
        System.out.println(demo2Service.callDemo1SayHello("World"));
        context.close();
    }

}

输出结果Hello World

版权声明:本文为博主原创文章,未经博主允许不得转载。

如何理解AngularJS中的依赖注入

AngularJS最容易引起混淆的特性之一就是依赖注入(DI)。可能很难理解到底什么是依赖注入,它如何工作,以及为什么它是有用的。     先从理解依赖注入打算要解决的问题开始。一个AngularJ...
  • ghostlpx
  • ghostlpx
  • 2016年10月07日 19:31
  • 709

【ASP.NET专题】(11)——Spring.NET框架简介

从该文章开始主要学习Spring.NET框架,对于很多程序员来说,Spring.NET框架是矛盾的,大家必须配置一些以前没有接触的文件,同时更多的程序员却还不知道Spring.NET框架究竟是什么玩意...
  • rocket5725
  • rocket5725
  • 2010年01月13日 17:01
  • 4562

有史以来最容易理解的控制反转(IoC)与注入依赖(DI)

我们经常会听说IoC,也就是Inversion of Controller,控制反转。事实上,IoC并不是一个新鲜的概念,最早可能是在1988年,由Ralph E. Johnson和Brian Foo...
  • bitcarmanlee
  • bitcarmanlee
  • 2016年11月13日 21:42
  • 696

spring框架学习(二)依赖注入

spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。接口注入不作要求,下面介绍前两种方式。 1,set注入   采用属性的set方法进行初始化,就成为set...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2014年03月07日 23:04
  • 126503

依赖注入的好处

DI其实是JAVA里一个很基础的概念,相信任何人都用过,在Spring里,把它总结为Dependency Injection,方便了程序构架的过程,并且实现low coupling。举个简单的例子...
  • zpyzly
  • zpyzly
  • 2012年03月06日 17:12
  • 989

为什么要使用依赖注入?

Spring IoC容器的依赖有两层含义:Bean依赖容器和容器注入Bean的依赖资源:      Bean依赖容器:也就是说Bean要依赖于容器,这里的依赖是指容器负责创建Bean并管理Bean的...
  • LPlanguage
  • LPlanguage
  • 2017年05月02日 10:24
  • 758

依赖注入原理(为什么需要依赖注入)

0. 前言 在软件工程领域,依赖注入(Dependency Injection)是用于实现控制反转(Inversion of Control)的最常见的方式之一。本文主要介绍依赖注入原理和常见的...
  • coderder
  • coderder
  • 2016年07月13日 14:25
  • 39448

依赖注入的javascript实现

前后端终究是要完成合久必分分久必合的趋势。在前后端分离的前提下,后端的一些设计模式慢慢地向前端过渡。 依赖注入在java等后端语言的发展下慢慢在前端使用。 在java中di主要是将对象在容器中实例...
  • evilemon
  • evilemon
  • 2015年12月14日 20:53
  • 679

注解与依赖注入

最近看到facebook扎克伯克一番话,很有味道,你不需要等到够优秀才开始,你应该立即开始去变得优秀。 1注解 1.1什么是注解 1.2为什么要使用注解 1.3自定义注解 1.4java内置了哪些注...
  • u012070360
  • u012070360
  • 2017年07月29日 21:06
  • 201

依赖注入和控制反转的理解,写的太好了。

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家...
  • bestone0213
  • bestone0213
  • 2015年08月11日 17:53
  • 39633
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1. Spring4.1-依赖注入
举报原因:
原因补充:

(最多只允许输入30个字)