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

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

用小说的形式讲解Spring(1) —— 为什么需要依赖注入

菜鸟大雄是如何偶遇Spring的

spring特性1-依赖注入

spring依赖注入(1)-基础

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程...

微软企业库4.1学习笔记(四十一)依赖注入模块Unity 简介

模块Unity是一个轻量的、可扩展的依赖注入容器,支持构造函数注入、属性注入、方法调用注入。你可以用它创建企业库对象,也可以创建自定义的业务对象。Unity和企业库中的其他模块有一些不同点:  ...
  • anyqu
  • anyqu
  • 2012年09月03日 12:30
  • 739

微软企业库4.1学习笔记(五)对象创建和依赖注入方法

企业库4.0和4.1的主要改进是加入了全新的,而且很容易使用的对象创建方式,包括其他的依赖对象。这个功能在企业库的Unity模块中通过依赖注入暴露,它使用了下面这些常用的设计模式。   Depe...
  • anyqu
  • anyqu
  • 2012年09月02日 21:36
  • 418

spring框架学习之路(一)-入门基础(1)-IOC(控制反转)&DI(依赖注入)

所谓“控制反转”,将控制权从程序自身转移到第三方(在spring中就是指applicationContext.xml文档)。 依赖注入,其实是IOC的另一种解释。用DI的设计思想,就是我们可以先创建被...

Spring依赖注入的XML配置文件的实现思想(1)——准备工作:如何读取XML的文件的内容

JDOM 操作XML 可扩展标记语言——eXtensible Markup Language 用户可以自己定义语言标记,只要有开始和闭合标签即可。 xsl装饰、修饰xml的显示结果。 ...

Spring 的本质系列(1) -- 依赖注入

1. 对象的创建        面向对象的编程语言是用类(Class)来对现实世界进行抽象, 在运行时这些类会生成对象(Object)。         当然,单独的一个或几个对象根本没办法完成复杂的...

Spring4 实战笔记(1):装配bean—依赖注入的本质

Spring的配置方法概览 正如在Spring初探一文中提到的,Spring容器负责创建应用中的bean,并通过DI维护这些bean之间的协作关系。作为开发人员,你应该负责告诉Spring容器需要创...

微软企业库4.1学习笔记(二十五)Unity依赖注入模块2

Unity模块的亮点   Unity模块包括了下面的特点   提供了一个创建对象,以及依赖的对象的方法  提供的RegisterType方法用来在容器中注册类型和映射,Resolve方法可以返...
  • anyqu
  • anyqu
  • 2012年09月03日 12:21
  • 942
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1. Spring4.1-依赖注入
举报原因:
原因补充:

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