Spring装配bean--01组件扫描和自动装配

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系

Spring提供了三种主要的装配机制:

  • 在XML中进行显式配置
  • 在Java中进行显式配置
  • 隐式的bean发现机制和自动装配

1自动化装配bean
Spring从两个角度来实现自动化装配:

  1. 组件扫描(component scanning):Spring 会自动发现应用上下文中所创建的bean
  2. 自动装配(autowired):Spring自动满足bean之间的依赖@Autowired

开启组件扫描的2种方法:

  • XML中配置<context:component-scan base-package="autowired" />
  • java配置类中添加@ComponentScan

以下是代码解释

1. CD光盘类

@Component("cd1")//括号内给该bean设置ID,若不设置则默认为类名首字母小写即cD
public class CD
{
    private String title = "最炫民族风";
    private String artist = "凤凰传奇";

    public void play()
    {
    	System.out.println("当前播放: " + title + " 演唱者: " + artist);
    }
}

2  CDplayer播放器类

@Component("cdPlayer")
public class CDplayer
{
    @Autowired
    private CD cd;

    public void play()
    {
    	cd.play();
    }
}

3  Java配置类开启组件扫描

@Configuration//声明该类是一个java配置类,不存在任何逻辑
@ComponentScan//在不声明basePackage的情况下,默认该类所在包下开启组件扫描
public class JavaConfig
{

}

4 XML配置文件开启组件扫描

<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

        <context:component-scan base-package="autowired" />
</beans>

5 测试类

public class TestCase
{
    @Test
    public void test01()
    {
    	//java配置方法  开启组件扫描
    	AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
    	CD cd1 = (CD) context.getBean("cd1");
    	System.out.println(cd1);
    	CDplayer cp1 = (CDplayer) context.getBean("cdPlayer");
    	cp1.play();
    }

    @Test
    public void test02()
    {
    	//XML配置方式  开启组件扫描
    	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    	CD cd1 = (CD) context.getBean("cd1");
    	System.out.println(cd1);
    	CDplayer cp1 = (CDplayer) context.getBean("cdPlayer");
    	cp1.play();
    }
}

  

6 console控制台结果

[email protected]
    当前播放: 最炫民族风 演唱者: 凤凰传奇

时间: 2024-12-21 16:09:18

Spring装配bean--01组件扫描和自动装配的相关文章

Spring - bean的autowire属性(自动装配)

当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注入,如果A的id因为某种原因修改了,那么所有引用了A的bean的<ref/>标签内容都得修改,这时候如果使用autowire="byType",那么引用了A的bean就完全不用修改了.autowire到底都什么用?我们继续往下看. autowire的用法: <bean i

Spring框架学习笔记(5)——自动装配

1.通过bean标签的autowire属性可以实现bean属性的自动装配. 创建一个新的Spring配置文件beans-autowire.xml,这里我们配置了3个bean,Address.Car.People,其中People自动装配了另外两个bean,使用的是bean标签的autowire属性,这个例子里如果将car改为car2打印出来的Person bean 的Car属性为null,即byName根据bean的setter风格进行自动装配有就装没有就不装.而使用byType的话如果配置有两

大厂面试官问你META-INF/spring.factories要怎么实现自动扫描、自动装配?

大厂面试官问你META-INF/spring.factories要怎么实现自动扫描.自动装配? 很多程序员想面试进互联网大厂,但是也有很多人不知道进入大厂需要具备哪些条件,以及面试官会问哪些问题,这里今天就给大家分享一下,如果大厂面试官问你META-INF/spring.factories要怎么实现自动扫描.自动装配,你需要怎么回答? 程序员应聘面试经验技巧和注意事项你知道哪些? 1.基础很重要,不要生疏了. 2.要关注技术前沿. 3.小公司比较看重知识的广度,大公司更看重知识的深度. 4.良好

Spring学习记录(十一)---使用注解和自动装配

Spring支持用注解配置Bean,更简便. 上面的组件,是根据实际情况配的.比如写的一个类,是做业务处理的,那就用注解@Service表示服务层组件,以此类推.将整体分成不同部分. 要在xml加入context命名空间 1 <!-- 指定Spring IOC容器扫描的包 --> 2 <context:component-scan base-package="package com.guigu.spring.beans.annotation"></cont

使用Spring的JavaConfig 和 @Autowired注解与自动装配

1 JavaConfig  配置方法 之前我们都是在xml文件中定义bean的,比如: 1 2 3 4 5 6 7 8 <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.springframework

Spring MVC 自定义标签如何使用@Autowired自动装配注解

在用Spring MVC框架做Web应用开发中,在一些特殊请款下我们都会用自定标签来完成一些特殊的功能. 在通常情况下,自定义标签的内容如果不通过访问服务就能实现,那么继承TagSupport,重写doStartTag()方法就可以实现基本功能. eg. 实现一个html标记的反转义功能的自定义标签 /** * @Comment * @Author Ron * @date 2016年8月30日 上午9:02:56 */ public class HtmlUnEncodeTags extends

Spring(二)scope、集合注入、自动装配、生命周期

原文链接:http://www.orlion.ga/189/ 一.scope bean的scope属性中常用的有两种:singleton(单例,默认)和prototype(原型,每次创建新对象) 例:beans.xml <bean id="userService" class="ml.orlion.service.UserService" scope="prototype">     <property name="u

Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)

例子: 定义泛型Store package javabased; public interface Store<T> { } 两个实现类StringStore,IntegerStore package javabased; public class IntegerStore implements Store<Integer> { } package javabased; public class StringStore implements Store<String>

3.Spring自动装配

3.Bean的自动装配 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean. Spring中bean有三种装配机制,分别是: 在xml中显式配置: 在java中显式配置: 隐式的bean发现机制和自动装配. 这里我们主要讲第三种:自动化的装配bean. Spring的自动装配需要从两个角度来实现,或者说是两个操作: 组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean: 组件扫描和自