文档章节

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

开源中国首席大督查
 开源中国首席大督查
发布于 2017/09/06 17:49
字数 334
阅读 10
收藏 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
博文 7
码字总数 1924
作品 0
海淀
程序员
私信 提问
Spring_总结_03_装配Bean之自动装配

一、前言 本文承接上一节:Spring总结02_依赖注入 在上一节我们了解到依赖注入的实质就是装配。 这一节我们来学习下装配Bean的相关知识。 二、Bean的装配机制 1.三种装配机制 Spring提供了三...

shirayner
07/27
0
0
《Spring5学习》 01 装配Bean之自动化装配

Spring的自动化装配就便利性方面远远优于其他装配方法,这也是业界目前主要采用的Bean装配机制。Spring基于组建扫描和自动装配实现自动化装配,能将用户的显示配置降到最低。以下通过一段代码...

老韭菜
08/05
0
0
Spring 管理Bean(获取Bean,初始化bean事件,自动匹配ByName······等)

1.实例化spring容器 和 从容器获取Bean对象 实例化Spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 [推荐使用] ApplicationContext ctx = new ClassPathXmlApplicat...

长平狐
2013/01/06
5.6K
0
Spring面试基本问题(1)

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

yaohong
2016/11/08
0
0
Spring 面试问题 TOP 50

Spring 面试问题 TOP 50 Spring Framework 现在几乎已成为 Java Web 开发的标配框架。那么,作为 Java 程序员,你对 Spring 的主要技术点又掌握了多少呢?不妨用本文的问题来检测一下。 本文...

静默虚空
08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《资治通鉴》读书笔记及阅读感悟2200字

《资治通鉴》读书笔记及阅读感悟2200字: 1.用夏桀,商纣暴虐昏君和商汤,周武王仁德明君做比较,因为人民归心,上天赐名要不然就永远要恪守臣节至死不渝。 又用商朝的微子取代纣王,商朝可以...

原创小博客
8分钟前
0
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
46分钟前
2
0
Docker搭建代码质量检测平台-SonarQube(中文版)

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言...

Jacktanger
53分钟前
2
0
Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
4
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部