zoukankan      html  css  js  c++  java
  • Spring系列之装配Bean

    Spring 的三种装配Bean的方式

    • 组件扫描+自动装配(隐式)
    • 通过Java config装配bean(显示)
    • 通过XML装配bean(显示)

    一、组件扫描+自动装配(隐式配置)

    •   组件扫描:

         Spring会自动发现应用上下文中所创建的bean

    •   自动装配:

                Spring会自动满足bean之间的依赖关系

    适用情况:

      简单bean,初始化不需要基本bean之外的其他参数,无参构造函数或者仅需要其他bean,如果需要其他bean作为属性需要用@Autowired注入,需要事先定义好装配策略。

      

    关键字:@Component:标识Bean,可被自动扫描发现。

        @Configuration+@ComponentScan(basepackages="xx"): 制定扫描基本包,作为Spring上下文的配置文件。

        @Autowired:自动装配,查找容器中满足条件的Bean,注入。

    实例:

    CompactDisc.java

    package cdplayer;
    
    public interface CompactDisc {
        void play();
    }

    SgtPeppers.java

    package cdplayer;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.stereotype.Component;
    
    @Component
    public class SgtPeppers implements CompactDisc {
    
        private String title="享受孤独的音乐";
        private String article="奏出和谐的篇章";
    
        @Override
        public void play() {
            System.out.println(title+article);
        }
    }

    CDPlayerConfig.java

    package cdplayer;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan
    public class CDPlayerConfig {
    }

    CDPlayerTest.java

    package cdplayer;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = CDPlayerConfig.class)
    public class CDPlayerTest {
        @Autowired
        private CompactDisc cd;
    
        @Test
        public void test(){
            cd.play();
        }
    }

    二、通过Java config装配bean(显示)

    适用情况:所有情况基本适用,区别方法一:不需要事先定义好装配策略,因为会在config.java中定义。

    关键词:@Configuration + @Bean:创建config.java,并定义bean的获取方法且需要用@Bean注释。

    CDPlayerConfig.java

    package cdplayer;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    //@ComponentScan
    public class CDPlayerConfig {
        @Bean
        public CompactDisc compactDisc(){
            return new SgtPeppers();
        }
    }

    SgtPeppers.java

    package cdplayer;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.stereotype.Component;
    
    //@Component
    public class SgtPeppers implements CompactDisc {
    
        private String title="享受孤独的音乐";
        private String article="奏出和谐的篇章";
    
        @Override
        public void play() {
    
            System.out.println(title+article);
        }
    }

    测试类不变。

    三、通过XML装配bean(显示)

    cdplayer.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:c="http://www.springframework.org/schema/c"
           xmlns:util="http://www.springframework.org/schema/util"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    
        <bean id="compactDisc" class="cdplayer.SgtPeppers"
            c:_0="Sgt. Pepper's Lonely Hearts Club Band"
            c:_1="The Beatles">
        </bean>
    
    </beans>

    CDPlayerTest:

    package cdplayer;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "cdplayer.xml")
    public class CDPlayerTest {
        @Autowired
        private CompactDisc cd;
    
        @Test
        public void test(){
            cd.play();
        }
    }
  • 相关阅读:
    canvas 方法参数智能提示
    layui 关闭弹窗,刷新父窗体页面
    UI设计灵感集结地
    Java Poi 读取excel 对所有类型进行处理
    jeecg v3.6.6 excel导入js方法完善
    父、子页面之间页面元素的获取,方法的调用
    ps载入渐变
    ps载入画笔
    做设计常用的素材下载网站
    色彩搭配神器
  • 原文地址:https://www.cnblogs.com/ktao/p/7683899.html
Copyright © 2011-2022 走看看