zoukankan      html  css  js  c++  java
  • Spring Bean装配方式

    Spring装配机制

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

    自动化装配bean

    • 组件扫描(component scanning),Spring会自动发现应用上下文中的bean
    • 自动装配(autowiring),Spring自动满足bean之间的依赖

    Speak.java

    public interface Speak {
        void say();
    }
    

    ChineseSpeak.java

    @Component("chineseSpeak")
    public class ChineseSpeak implements Speak {
        public void say() {
            System.out.println("用中文说");
        }
    }
    

    SpeakConfig.java

    @Component
    @ComponentScan(basePackages = "com.xqh.spring.autowire")
    public class SpeakConfig {
    }
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = SpeakConfig.class)
    public class SpeakTest {
        @Autowired
        private Speak speak;
    
        @Test
        public void sayTest(){
            speak.say();
        }
    }
    

    @Component注解告诉Spring这是一个组件类并为之创建bean,bean的id为首字母变小写的类名

    @ComponentScan注解启用组件扫描并默认扫描与配置类相同的包

    @Autowired注解会在Spring上下文中在自动装配符合的bean

    通过java代码装配bean

    • 创建配置类并标记 @Configuration注解

    • 创建方法标记 @Bean注解

    Speak.java

    public interface Speak {
        void say();
    }
    

    ChineseSpeak.java

    public class ChineseSpeak implements Speak {
        public void say(){
            System.out.println("通过java代码装配-用中文说");
        }
    }
    

    SpeakConfig.java

    @Configuration
    public class SpeakConfig {
        @Bean
        public Speak chineseSpeak() {
            return new ChineseSpeak();
        }
    }
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = SpeakConfig.class)
    public class SpeakTest {
        @Autowired
        private Speak speak;
    
        @Test
        public void sayTest(){
            speak.say();
        }
    }
    

    @Configuration标记的类表名是一个配置类并且包含在Spring上下文中如何创建bean的细节

    @Bean注解告诉Spring这个方法将返回一个对象并且注册为Spring上下文中的bean

    通过xml装配bean

    • 创建Spring Xml配置文件
    • 在JavaConfig中导入bean配置文件

    Speak.java

    public interface Speak {
        void say();
    }
    

    ChineseSpeak.java

    public class ChineseSpeak implements Speak {
        public void say() {
            System.out.println("通过xml装配bean-用中文说");
        }
    }
    

    SpeakConfig.java

    @Configuration
    @ImportResource("classpath:spring-beans.xml")
    public class SpeakConfig {
    }
    

    spring-beans.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="chineseSpeak" class="com.xqh.spring.xmlconfig.ChineseSpeak"></bean>
    </beans>
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = SpeakConfig.class)
    public class SpeakTest {
        @Autowired
        private Speak speak;
    
        @Test
        public void sayTest(){
            speak.say();
        }
    }
    
  • 相关阅读:
    【VS开发】设置文档标题
    【VS开发】修改MainFrame窗口名称1
    【VS开发】修改MainFrame窗口名称1
    【DSP开发】ccsv6添加simulator功能
    【DSP开发】ccsv6添加simulator功能
    【VS开发】Cameralink接口
    【VS开发】Cameralink接口
    【VS开发】【图像处理】GigE和USB3 vision选择?
    【VS开发】【图像处理】GigE和USB3 vision选择?
    【VS开发】【图像处理】Pleora推出iPORT CL-U3外置抓帧器
  • 原文地址:https://www.cnblogs.com/xqhppt/p/7747877.html
Copyright © 2011-2022 走看看