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();
        }
    }
    
  • 相关阅读:
    linux系统常用命令
    oracle resetlog与noresetlog的作用(转载)
    RMAN备份之非归档模式下的备份
    查看oracle锁及解决办法
    夫夷以近,则游者众,险以远,则至者少!
    (转)一个10年程序员职业发展、总结和困境
    在myeclipse中写sql语句的细节问题
    myeclipse查询mysql出来的汉字是乱码
    如何将DB2的数据库转换到mySQL中?
    笔记本建立wifi热点的实用详细步骤
  • 原文地址:https://www.cnblogs.com/xqhppt/p/7747877.html
Copyright © 2011-2022 走看看