Spring的几种注入方式

通过set方式注入

bean的定义:

package com.ydoing.demo;
public class Person {
    private Computer computer;
    public void setComputer(Computer computer) {
        this.computer = computer;
    }
    public void useComputer() {
        computer.start();
    }
} 

bean的配置:

    <bean id="person" class="com.ydoing.demo.Person">
        <property name="computer" ref="computer" />
    </bean> 

通过构造器注入

注入基本类型

bean的定义:

package com.ydoing.demo;
public class CPU {
    private String name;
    public CPU(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

bean的配置:

    <bean id="cpu" class="com.ydoing.demo.CPU">
        <constructor-arg value="Intel"/>
    </bean> 

注入对象引用

package com.ydoing.demo;
public class Computer {
    private String name;
    private CPU cpu;
    public Computer(String name, CPU cpu) {
        this.name = name;
        this.cpu = cpu;
    }
    public void start() {
        System.out.println(name + "computer run");
        System.out.println("CPU name is: " + cpu.getName());
    }
} 

bean的配置

    <bean id="computer" class="com.ydoing.demo.Computer">
        <constructor-arg value="Del"/>
        <constructor-arg ref="cpu"/>
    </bean> 

通过工厂方法

适合私有构造器以及没有set方法的bean。

package com.ydoing.demo;
public class Singleton {
    private Singleton() {
    }
    private static class SingletonHolder {
        static final Singleton instance = new Singleton();
    }
    public static final Singleton getInstance() {
        return SingletonHolder.instance;
    }
}

bean的配置

    <bean id="singleton" class="com.ydoing.demo.Singleton" factory-method="getInstance"/> 

装配集合

list

        <property name="memorys">
            <list>
                <ref bean="Kingston" />
                <ref bean="Apacer" />
            </list>
        </property> 

或者

        <property name="memorys">
            <list>
                <value>1</value>
                <value>2</value>
            </list>
        </property> 

set

        <property name="memorys">
            <set>
                <ref bean="Kingston" />
                <ref bean="Apacer" />
            </set>
        </property> 

map

        <property name="memorys">
            <map>
                <entry key="key1" value="11"/>
                <entry key="key2" value="22"/>
            </map>
        </property> 

或者

        <property name="memorys">
            <map>
                <entry key-ref="key1" value-ref="bean1"/>
                <entry key-ref="key2" value-ref="bean2"/>
            </map>
        </property> 

props

props的key和value必须是String类型。

        <property name="memorys">
            <props>
                <key>OK</key>
                <key>No</key>
            </props>
        </property> 

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

时间: 2024-08-23 14:02:17

Spring的几种注入方式的相关文章

spring ioc三种注入方式

spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容器控制程序之间的关系,而不是由代码直接控制 由于控制权由代码转向了容器,所以称为反转 接口注入 Setter 注入 构造器注入 三种依赖注入方式的比较 : 接口注入: 接口注入模式因为历史较为悠久,在很多容器中都已经得到应用.但由于其在灵活性.易用性上不如其他两种注入模式,因而在 IOC 的专题世界

Spring的三种注入方式

据说不懂spring的程序员就相当于不会Java,于是最近一段时间并行学习下spring框架.先学习总结下spring的IoC的五种注入方式. 这里我想象的场景是这样的:士兵和他的武器的故事.这个是我目前的结构图: Human和Weapon是两个接口,Gun和Solder分别是实现了上面两个接口的类,其中,由于Solder需要Gun而形成了对Gun类的依赖 上面的代码分别为: Weapon接口 public interface Weapon { public void function(); }

Spring IOC的三种注入方式

Spring IOC三种注入方式: 1.    接口注入 2.    getter,setter方式注入 3.    构造器注入 对象与对象之间的关系可以简单的理解为对象之间的依赖关系:A类需要B类的一个实例来进行某些操作,比如在A类的方法中需要调用B类的方法来完成功能,叫做A类依赖于B类.控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术,由容器控制程序之间的关系,而不是由代码直接控制. 1.接口注入 public class ClassA {  private InterfaceB

Spring事务Transaction配置的五种注入方式详解

Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ??? 总结如下: ??? Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. ???DataSou

Spring IOC 中三种注入方式

项目错误知识点记录 正文 最近在项目的时候,用到Spring框架,Spring框架提供了一种IOC的自动注入功能,可以很轻松的帮助我们创建一个Bean,这样就省的我们四处写new Object()这样的代码了.IOC提供了三种注入方式,接口注入,set方法注入以及构造器注入,三种注入方式使用起来都很easy,具体的使用方法网上都有很多,大家可以自行搜索百度... 那天当我使用接口注入的时候,发现IDEA给我一个警告(以前也有这样的警告,只不过我没太注意),看了看是让我采用构造器注入方式.这就让我

struts2和spring的两种整合方式

首先,来看看如何让Spring 来管理Action. 引入包struts2-spring-plugin-2.2.1.jar 配置 web.xml <!-- 指定spring的配置文件,主要配置spring为随着服务器启动而自启动,默认从web根目录寻找配置文件,我们可以通过spring提供的classpath:前缀指定从类路径下寻找 --> <context-param> <param-name>contextConfigLocation</param-name&

spring security四种实现方式

spring security四种实现方式 标签: spring security spring spring(20) > 目录(?)[+] 最简单配置spring-securityxml实现1 实现UserDetailsService 实现动态过滤用户权限 实现AuthenticationProvider自定义参数验证 spring security实现方式大致可以分为这几种: 1.配置文件实现,只需要在配置文件中指定拦截的url所需要权限.配置userDetailsService指定用户名.

我爱Java系列之---【SpringBoot中常用的注解和两种注入方式】

@EnableConfigurationProperties(DataSourceProperties.class) 来声明要使用DataSourceProperties 这个类并初始化该类对象,该类不用放在IOC容器中,可以通过该注解直接使用. [email protected]:一般写在类上边,通过该注解将当前类初始化到Spring的IOC容器中,其他类若想调用,直接用@Autowired去容器中拿. [email protected]: 一般写在类上边,标明该类是一个配置类,被注解的类内部

Spring常用的三种注入方式

好文要收藏,摘自:https://blog.csdn.net/a909301740/article/details/78379720 Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 构造方法注入先简单了解一下测试项目的结构,用maven构建的,四个包: entity:存储实体,里面只有一个User类dao:数据访问,一个接口,两个实现类service:服务层,一个接口,一个实现类,实现类依赖于IUserDaote