【Spring实战】—— 5 设值注入

本篇主要讲解了Spring的最常用的功能——依赖注入。

注入的方式,是使用Getter Setter注入,平时大多的编程也都是使用这种方法。

  举个简单的例子,还是表演者。

  表演者有自己的属性,年龄或者表演的歌曲等等。还需要一些复杂的属性,比如乐器,每一种乐器会发出不同的声音。

  下面看一下表演者Performer

package com.spring.test.action1;

public interface Performer {
    void perform() throws PerformanceException;
}

  我们自己定义一个钢琴演奏者,该表演者有年龄和歌曲,还有额外的一种乐器属性。

package com.spring.test.setter;

import com.spring.test.action1.PerformanceException;
import com.spring.test.action1.Performer;

public class Instrumentalist implements Performer{
    private String song;
    private int age;
    private Instrument instrument;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSong() {
        return song;
    }
    public void setSong(String song) {
        this.song = song;
    }
    public Instrument getInstrument() {
        return instrument;
    }
    public void setInstrument(Instrument instrument) {
        this.instrument = instrument;
    }
    public Instrumentalist(){}
    public void perform() throws PerformanceException {
        System.out.println("Instrumentalist age:"+age);
        System.out.print("Playing "+song+":");
        instrument.play();
    }
}

  乐器的构造如下,依然使用接口方式:

package com.spring.test.setter;

public interface Instrument {
    public void play();
}

  萨克斯实现该乐器接口

package com.spring.test.setter;

public class Saxophone implements Instrument {
    public Saxophone(){}
    public void play() {
        System.out.println("TOOT TOOT TOOT");
    }
}

  以上就是基本的类的构造了。

  下面看一下Spring的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     <bean id="sax" class="com.spring.test.setter.Saxophone"/>
     <bean id="kenny" class="com.spring.test.setter.Instrumentalist">
         <property name="song" value="Jingle Bells" />
         <property name="age" value="25" />
         <property name="instrument" ref="sax" />
     </bean>
</beans>

  在配置文件中,可以发现,设值注入时,使用name来指定注入哪个属性

  name的命名方式依据变量名称。

  1 首字母不区分大小写,其他部分与变量名称相同。

  2 注入的属性类型,可以是String , int , double , float等,当属性是String或int时,可以根据变量的类型自动转换。

  3 注入的是一个bean,则直接使用ref链接到另一个bean即可。

  下面是应用上下文的代码:

package com.spring.test.setter;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.test.action1.PerformanceException;

public class test {
    public static void main(String[] args) throws PerformanceException {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
        Instrumentalist performer = (Instrumentalist)ctx.getBean("kenny");
        performer.perform();
    }
}

  执行结果如下:

Instrumentalist age:25
Playing Jingle Bells:TOOT TOOT TOOT

 

本文转自博客园xingoo的博客,原文链接:【Spring实战】—— 5 设值注入,如需转载请自行联系原博主。

时间: 2024-11-25 19:00:45

【Spring实战】—— 5 设值注入的相关文章

【Spring实战】—— 2 构造注入

本文讲解了构造注入以及spring的基本使用方式,通过一个杂技演员的例子,讲述了依赖注入属性或者对象的使用方法. 如果想要使用spring来实现依赖注入,需要几个重要的步骤: 1 定义主要的类和需要分离的属性.这里主要的类,是指程序的主要对象,在例子中是Juggler杂技员.而想要分离构造的属性,是它手中的袋子的数目beanBags. 2 配置bean.xml.通过配置文件,确定主要的类和属性之间的关系,以及实现类. 3 通过应用上下文,获取bean,并进行使用. 注入属性 实例代码: 1 表演

spring mvc-springmvc model设值以后如何在jsp页面引用呢?

问题描述 springmvc model设值以后如何在jsp页面引用呢? controller代码 @RequestMapping(method = RequestMethod.GET) public String update(Model model) { System.out.println("service update"); model.addAttribute("greetings", "I came from Model not ModelAt

Spring中dao的值注入不到业务层,配置文件中的sessionFactory创建也不起作用

问题描述 只有在dao层能得到数据,传不到Biz层,如果在Biz层  buyinfoDAO=new BuyinfoDAOImpl();就没问题了,但就没有依赖注入的意义了java代码: applicationContext.xml配置:<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name=&

【Spring实战】—— 6 内部Bean

本篇文章讲解了Spring的通过内部Bean设置Bean的属性. 类似内部类,内部Bean与普通的Bean关联不同的是: 1 普通的Bean,在其他的Bean实例引用时,都引用同一个实例. 2 内部Bean,每次引用时都是新创建的实例. 鉴于上述的场景,内部Bean是一个很常用的编程模式. 下面先通过前文所述的表演者的例子,描述一下主要的类: package com.spring.test.setter; import com.spring.test.action1.PerformanceExc

Spring进阶之路(1)-Spring核心机制:依赖注入/控制反转

原文地址:http://blog.csdn.net/wangyang1354/article/details/50757098 我们经常会遇到这样一种情景,就是在我们开发项目的时候经常会在一个类中调用其他的类中的方法,来完成我们期望的任务,大部分的情况下往往会采用在当前需要的这个类里面new一个实例出来,然后调用他的方法,那么这样的话会有个问题,就是有一天我想改变下这个类,改为其他的名称,那么这时候必须要做的是同时去调用方的类文件中改变这个改变的类的名称.这样的情况是因为代码的耦合带来了后期维护

【Spring实战】—— 7 复杂集合类型的注入

之前讲解了Spring的基本类型和bean引用的注入,接下来学习一下复杂集合类型的注入,例如:List.Set.Map等. 对于程序员来说,掌握多种语言是基本的技能. 我们这里做了一个小例子,程序员们是一个Bean实例,而掌握的编程语言则是放入一个集合类型中进行注入. 简单的来说: List是一种按照序号标识的集合, Set与List相似但是元素不允许重复, Map则是一种自定的键值对,键值都可以是任意的类型. Bean的实现类 public class Programmer { public

Spring实战2:装配bean—依赖注入的本质

主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须相互了解.能够相互协作完成工作.例如,在一个在线购物系统中,订单管理组件需要与产品管理组件以及信用卡认证组件协作:这些组件还需要跟数据库组件协作从而进行数据库读写操作. 在Spring应用中,对象无需自己负责查找或者创建与其关联的其他对象,由容器负责将创建各个对象,并创建各个对象之间的依赖关系.例如

Spring实战6-利用Spring和JDBC访问数据库

主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRepository和SpittleRepository接口,在本地启动该web服务的时候会遇到控制器无法注入对应的bean的错误,因此我决定跳过6~9章,先搞定数据库访问者一章. 在企业级应用开发中不可避免得会涉及到数据持久化层,在数据持久化层的开发过程中,可能遇到很多陷阱.你需要初始化数据库访问框架.

《Spring实战(第4版)》——导读

前言 百尺竿头更进一步.十几年前,Spring刚刚进入Java开发领域,其目标是简化企业级Java开发.它使用更为简单和轻量级的模型,该模型基于简单老式的Java对象,以此挑战了当时重量级的开发模型. 现在,已经过去了很多年,Spring也发布了众多的版本,我们可以看到Spring在企业级应用开发领域已经有了巨大的影响力.对于无数的Java项目来说,它就是事实上的标准,并且对于一些规范和它本来想取代的框架,Spring也对其演进产生了影响.毫无疑问,如果Spring不挑战之前版本的企业级Java