文档章节

Spring配置的三种主要装配机制

开源中国首席大督查
 开源中国首席大督查
发布于 2017/09/06 17:49
字数 334
阅读 9
收藏 0
点赞 0
评论 0

1.在XML中进行显示配置

对应的java代码如下所示

package com.spring;
public class Address {
    private String desc;
    // getter setter
}
package com.spring;
public class Car {
    private String desc;
}
package com.spring;

public class Student {
    private String name;
    private Address address;

    public Student(Address address) {
        this.address = address;
    }
}

在XML中可以通过下面的配置来生成一个bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="address" class="com.spring.Address" />
    <bean id="car" class="com.spring.Car" />

    <bean id="student" class="com.spring.Student">
        <constructor-arg ref="address" /><!--构造函数注入 -->
        <property name="car" ref="car" /><!-- set方法注入-->
    </bean>
</beans>

2.在Java中进行显示配置

package com.spring;
public class Address {
    private String desc;
    // getter setter
}

package com.spring;

import org.springframework.stereotype.Component;
public class Car {
    private String desc;
}
package com.spring;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;


@Configuration
@ComponentScan(basePackages = "com.spring")
public class JavaConfig {

    @Bean
    public Car car(){
        return new Car();
    }
    
    @Bean
    public Address address(){
        return new Address();
    }

    @Bean
    public Student student() {
        Student student = new Student(address());
        student.setCar(car());
        return student;
    }
}

3.隐式的bean发现机制和自动装配

package com.spring;

import org.springframework.stereotype.Component;

@Component("address")
public class Address {
    private String desc;
    // getter setter
}
package com.spring;

import org.springframework.stereotype.Component;

@Component("car")
public class Car {
    private String desc;
}
package com.spring;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("student")
public class Student {
    private String name;
    private Address address;
    private Car car;

    @Autowired
    public Student(Address address) {
        this.address = address;
    }

    public Car getCar() {
        return car;
    }

    @Autowired
    public void setCar(Car car) {
        this.car = car;
    }
}

@Configuration
@ComponentScan(basePackages = "com.spring")
public class JavaConfig {}

© 著作权归作者所有

共有 人打赏支持
开源中国首席大督查
粉丝 1
博文 6
码字总数 1588
作品 0
海淀
程序员
Spring面试基本问题(1)

1、什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员...

yaohong
2016/11/08
0
0
Spring面试问答Top 25

本人收集了一些在大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能在你下次面试时就会被问到。对于本文中未提及的Spring其他模块,我会单独分享面试的问题和答案。 欢迎大家向...

赵小宾
2015/05/04
0
1
Spring中依赖注入的四种方式

在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入 这是最常用的方式; · 使用构造器注入; · 使用Filed注入(用于注解方式). 使用属性的setter方法注入 首...

Zero零_度
2015/04/07
0
0
Spring XML配置的12个技巧

Spring是一个强有力的java程序框架,其被广泛应用于java的程序中。它用POJO提供了企业级服务。Spring利用依赖注入可以获得简单而 有效的测试能力。Spring beans,依赖关系,以及服务所需要的...

晨曦之光
2012/02/16
0
0
Spring IOC知识点一网打尽!

前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 在刷Spring书籍的时候花了点时间去学习了单例模式和工...

Java3y
05/22
0
0
SpringFramework核心技术一(IOC:详细的依赖和配置)

详细的依赖和配置 如前一节所述,您可以将bean属性和构造函数参数定义为对其他受管Bean(协作者)的引用,或者将其定义为内联定义的值。Spring的基于XML的配置元数据为此支持其元素和元素中的...

王木东
05/16
0
0
Spring学习笔记1——基础知识

1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书《Expert one-on-one J2EE Design and Development》和《Expert one-on-one J2EE deve...

李长春
2011/10/09
0
0
[转载]69道Spring面试题和答案

原文地址 http://ifeve.com/spring-interview-questions-and-answers/ 目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概......

王木东
2017/03/27
0
0
Spring 3.0 注解注入详解

一、各种注解方式 1.@Autowired注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。@Autowired的标注位置不同,它们都会在Spr...

李长春
2012/02/09
0
0
Spring基于 Annotation 的简单介绍

1.使用 @Repository、@Service、@Controller 和 @Component 将类标识为 Bean: Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository 注解便属于最先引入的一批,...

李长春
2011/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kafka设计解析(一)- Kafka背景及架构介绍

原创文章,转载请务必将下面这段话置于文章开头处。(已授权InfoQ中文站发布) 本文转发自技术世界,原文链接 http://www.jasongj.com/2015/03/10/KafkaColumn1 摘要   Kafka是由LinkedI...

mskk
4分钟前
0
0
使用Service Mesh整合您的微服务架构

在微服务架构的世界中,它正在达到这样的程度,即管理系统的复杂性对于利用它带来的好处变得至关重要。 目前,如何实现这些微服务不再是一个问题,因为有很多可用的框架(Spring Boot,Vert....

xiaomin0322
8分钟前
0
0
看看 LinkedList Java 9

终于迎来了 LinkedList 类,实现的接口就有点多了 Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>。LinkedList是一个实现了List接口和Deque接口的双端链......

woshixin
26分钟前
0
0
算法 - 冒泡排序 C++

大家好,我是ChungZH。今天我给大家讲一下最基础的排序算法:冒泡排序(BubbleSort)。 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大(可以相反),就交换他们两个。 对每...

ChungZH
29分钟前
0
0
jquery ajax request payload和fromData请求方式

请求头的不同 fromData var data = { name : 'yiifaa'};// 提交数据$.ajax('app/', { method:'POST', // 将数据编码为表单模式 contentType:'application/x-ww...

lsy999
31分钟前
0
0
阿里P7架构师,带你点亮程序员蜕变之路

前言: Java是现阶段中国互联网公司中,覆盖度最广的研发语言。 掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,成为Java架...

Java大蜗牛
33分钟前
1
0
Ecstore 在没有后台管理界面(维护)的情况如何更新表的字段

window 系统: 切换到:app\base 目录下: C:\Users\qimh>d: D:\>cd D:\WWW\huaqh\app\base 执行:D:\WWW\huaqh\app\base>cmd update linux 系统: 1># cd /alidata/www.novoeshop.com/app/......

qimh
37分钟前
0
0
设计模式-策略模式

策略模式 解释 对工厂模式的再次封装,使用参数控制上下文信息(将工厂返回的实例赋值给context field) 不会返回bean实例,只是设置对应的条件 调用context的方法(调用field的方法) 用户只...

郭里奥
40分钟前
0
0
python使用有序字典

python自带的collections包中有很多有用的数据结构可供使用,其中有个叫OrderedDict类,它可以在使用的时候记录元素插入顺序,在遍历使用的时候就可以按照原顺序遍历。 a = {"a":1,"b"...

芝麻糖人
今天
0
0
RestTemplate HttpMessageConverter

RestTemplate 微信接口 text/plain HttpMessageConverter

微小宝
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部