`
yufeng506
  • 浏览: 19464 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

spring的自动装配方式总结

阅读更多

spring的装配方式有很多种,我主要学习了下autowire=byType,byName,constructor的用法。他们的配置文件和代码如下:

类文件

public class Person {
    private String name;
    private Home myhome;
   
    public Person(Home myhome){
        this.myhome = myhome;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Home getMyhome() {
        return myhome;
    }
    public void setMyhome(Home myhome) {
        this.myhome = myhome;
    }
   
}

 

package com.autowire;

public class Home {
    private String addr;

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }
     
}

byName装配:根据person类里有myhome属性,而且没有通过设值注入,spring容器会根据名字相同找到配置的属性。

<bean id="person" class="com.autowire.Person"  autowire="byName">
        <property name="name" value="james"></property>
    </bean>
    <bean id="myhome" class="com.autowire.Home">
        <property name="addr" value="hongkong"></property>
    </bean>

byType装配:根据person里有myhome的类型,在容器里找到类型相同的bean,并把值注入。注意容器里只能有一个相同的bean类型,如果多于一个就会报异常。如果没有就什么都不做。

<bean id="person" class="com.autowire.Person"  autowire="byType">
        <property name="name" value="james"></property>
    </bean>
    <bean id="myhome" class="com.autowire.Home">
        <property name="addr" value="hongkong"></property>
    </bean>

constructor装配:通过类里提供的构造函数来装配,这个构造函数里只能提供一个所需的属性作为参数,多了就会报异常。

<bean id="person" class="com.autowire.Person"  autowire="constructor">
        <property name="name" value="james"></property>
    </bean>
    <bean id="myhome" class="com.autowire.Home">
        <property name="addr" value="hongkong"></property>
    </bean>

测试方法:

public class TestMain {
    public static void main(String [] args){
        ApplicationContext ac = new ClassPathXmlApplicationContext("autowire.xml");
        Test t = (Test)ac.getBean("test");
        System.out.println(t.getStr()+"******"+t.getTime());
        Person p = (Person)ac.getBean("person");
        System.out.println(p.getName()+"+++"+p.getMyhome().getAddr());
    }
}

分享到:
评论

相关推荐

    吴天雄--Spring笔记.doc

    Spring个人笔记,共计59页。第一天内容:Spring框架简介(EJB、JMX、Spring核心功能、Spring模块...第三天内容:Spring自动装配,Spring自动加载properties文件,单例设计模式,声明式事务,Ajax,JSON。 --author:

    整合struts2和spring源代码(可以直接在tomcat中运行)

    可以直接运行,并对整合spring和struts2步骤及需要注意的事项进行类总结 整合spring和struts2总结 1.将struts2和spring中的库文件复制...— 如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。

    spring.net中文手册在线版

    4.3.属性,协作对象,自动装配和依赖检查 4.3.1.设置对象的属性和协作对象 4.3.2.构造器参数解析 4.3.2.1.根据参数类型匹配构造器参数 4.3.2.2.根据参数索引匹配构造器参数 4.3.2.3.根据名称匹配构造器参数 4.3.3....

    Spring.3.x企业应用开发实战(完整版).part2

    4.10.3 自动装配Bean 4.10.4 Bean作用范围及生命过程方法 4.11 基于Java类的配置 4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.6. 自动装配(autowire)协作者 3.3.6.1. 设置Bean使自动装配失效 3.3.7. 依赖检查 3.3.8. 方法注入 3.3.8.1. Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

    Spring 2.0 开发参考手册

    3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 3.5. 定制bean特性 3.5.1...

    Spring中文帮助文档

    3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton beans和prototype-bean的依赖 3.4.4. 其他作用域 ...

    77道Spring面试题以及参考答案(2024年最新版)

    3. Spring Bean部分围绕Bean的生命周期、作用域、自动装配等进行了详细阐述。 4. 注解部分列举了常用的Spring注解及其作用,如@Component、@Autowired等。 5. 数据访问部分涉及了Spring对JDBC、Hibernate等数据访问...

    Spring API

    3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton beans和prototype-bean的依赖 3.4.4. 其他作用域 ...

    spring chm文档

    3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 3.5. 定制bean特性 3.5.1...

    Spring3.x企业应用开发实战(完整版) part1

    4.10.3 自动装配Bean 4.10.4 Bean作用范围及生命过程方法 4.11 基于Java类的配置 4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring...

    Spring

    全文大纲1、Spring1.1、简介1.2、优点1.3、组成(七大模块)1.4、拓展2、IOC理论推导2.1、最初的开发2.2、改进后的开发2.3、总结3、Hello Spring3.1、测试案例一3.2、测试案例二3.3、补充4、IOC创建对象的方式4.1、...

    Springboot启动扩展点详细总结.docx

    想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周期也能促进我们加深对spring的理解。业务代码也能合理利用这些扩展点写出更加漂亮的代码。

    SpringCloud.Honxton 版本 OpenFeign原理上篇

    我个人的习惯,在使用springcloud 的组件时,会先去用一下原生依赖的使用方法,因为在springboot的自动装配下让使用变得简单,但使用也更加机械化,导致我们会无法看透到底在用一个什么东西。 所以我们先单独分析...

    spring学习笔记

    Bean:....................................................................................................................................12 1.4.1Spring 框架Bean 实例化的方式:.............................

    JAVA毕业设计之springboot032阿博图书馆管理系统(springboot+mysql)完整源码.zip

    技术亮点:使用Spring Boot的自动装配功能,简化了项目的依赖管理。使用MyBatis作为持久层框架,简化了数据库操作。使用Thymeleaf作为模板引擎,实现了前后端的分离。使用Bootstrap作为前端框架,美化了界面。总结:...

    iuhyiuhkjh908u0980

    安装ivy主要有两种方式,手工安装或者自动安装。 1) 手工安装 从这里下载你想要的版本,在任何你想的地方解开下载的zip文件,并复制ivy的jar文件到你的ant的lib目录(ANT_HOME/lib). 如果你使用ant 1.6.0或者更高,你...

Global site tag (gtag.js) - Google Analytics