装配Bean:JavaConfig@Component@ComponentScan@Configuration
来源:互联网 发布:浦口行知基地军训 编辑:程序博客网 时间:2024/05/16 18:54
包扫描+JavaConfig方式加载Beans
@Component
@ComponentScan
@Configuration
接口类
package com.xbz.learn.spring.autowire;public interface MobilePhone { /** * 给XXX打电话 * @param phoneNumber */ public void callPerson(String phoneNumber);}
实现类
package com.xbz.learn.spring.autowire;import org.springframework.stereotype.Component;/** * MobilePhone接口的iphone实现类 * @author xbz * */@Component("iphone")public class Iphone implements MobilePhone{ public void callPerson(String phoneNumber) { System.out.println("iphone 正在向【"+phoneNumber+"】打电话"); }}
package com.xbz.learn.spring.autowire;import org.springframework.stereotype.Component;@Component("xiaomi")public class XiaoMiPhone implements MobilePhone { public void callPerson(String phoneNumber) { System.out.println("小米手机 正在向【"+phoneNumber+"】打电话"); }}
JavaConfig类
package com.xbz.learn.spring.autowire.javaConfig;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import com.xbz.learn.spring.autowire.MobilePhone;@Configuration@ComponentScan(basePackageClasses={MobilePhone.class})public class SpringJavaConfig {}
测试类
package com.xbz.learn.spring.autowire.javaConfig;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;import com.xbz.learn.spring.autowire.MobilePhone;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes={SpringJavaConfig.class})public class SpringJavaConfigTest { @Autowired() private MobilePhone iphone; @Autowired() private MobilePhone xiaomi; @Test public void testJavaConfig(){ System.out.println("iphone:"+iphone); System.out.println("xiaomi:"+xiaomi); iphone.callPerson("iphone"); xiaomi.callPerson("xiaomi"); System.out.println("is same?"+(iphone==xiaomi)); }}
都说@Autowired默认类型匹配,但是我上面IOC容器明明有两个MobilePhone接口的不同实现类,为什么测试正常呢???当我将其中一个变量名改为小米2时,就会出现报错。
所以我猜测
1.@Autowired是变量名称优先,没有才会是类型匹配。
2.先按照类型匹配,发现有多个时,就会用变量名称匹配,如果不存在,则报错。(似乎这个比较合理)
0 0
- 装配Bean:JavaConfig@Component@ComponentScan@Configuration
- 装配Bean:JavaConfig@Bean@Configuration
- Spring journey -- JavaConfig 装配 Bean
- spring实战-JavaConfig装配bean
- 装配Bean:XML与JavaConfig混合装配
- Spring Bean之JavaConfig自动化装配bean
- spring注解:@ComponentScan,@Bean,@Import,@Component
- 【Spring 核心】装配bean(二) JavaConfig装配
- Spring的bean的装配 @Componen @ComponentScan @Autowired
- spring笔记:第二章(通过javaconfig类装配bean)
- 第2章 装配Bean---xml和javaConfig混合使用装配---笔记5
- @ComponentScan 和 @Configuration
- @Configuration+@Bean & @Component & @Resource/@autowired/@Inject
- spring的注解(1): @Configuration,@Bean,@Component,
- spring系列之@Configuration注解、@Bean注解以及自动扫描注解@componentScan
- Spring in action 02 -- 装配 Bean(JavaConfig)遇到的问题
- 从零开始的spring 之 脱离web下的spring 上 (javaconfig装配bean)
- @Bean在@Configuration和在@Component中的区别
- 计蒜客挑战难题:最后一个单词的长度
- hdu 5682 Counting Intersections 离散化+树状数组
- How to run the multiple tests with different weight Groovy way
- Maven学习 (四) 使用Nexus搭建Maven私服
- HDU 1269 Tickets(水题)
- 装配Bean:JavaConfig@Component@ComponentScan@Configuration
- C语言中结构体指针的定义和引用
- unity 实例化物体并成为某个物体的子物体
- JZOJ8.18(C组)对撞机
- shell脚本
- 遍历python字典的几种方法
- ROS_Kinetic_23 ROS流行版本和相关书籍汇总
- HDOJ -- 1248 寒冰王座
- hdu 2056 Rectangles