文档章节

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

开源中国首席大督查
 开源中国首席大督查
发布于 2017/09/06 17:49
字数 334
阅读 9
收藏 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面试基本问题(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
Spring面试底层原理的那些问题,你真的懂Spring吗?

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

Java高级架构
07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
18分钟前
1
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
21分钟前
1
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
1
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
2
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部