装配Bean:JavaConfig@Bean@Configuration
2016-08-18 20:24
399 查看
使用JavaConfig方式进行Spring容器Bean装载
@Configuration
@Bean
@Autowired()
@Qualifier
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringJavaConfig.class})
我们模拟了两个bean,使用JavaConfig形式来加载beans,并使用单元测试方式,测试效果。
@Configuration –>指明该类为JavaConfig类
@Bean–>在方法上,表示方法最终要返回一个对象,这个对象将会出现在IOC容器中【默认的,bean的ID为方法名】。所以注意ID的唯一性,且使用@Bean在IOC中生成的bean为单例的。对于同一类型的Bean多次使用@Bean最终产生的还是同一个bean.
如
public MobilePhone iphone(){
return new IphoneMobilePhoneImpl()
}
public MobilePhone anotherIphone(){
return new IphoneMobilePhoneImpl()
}
最终实际为同一iphone
接口类,模拟业务方法
实现类
JavaConfig类
测试类
@Configuration
@Bean
@Autowired()
@Qualifier
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringJavaConfig.class})
我们模拟了两个bean,使用JavaConfig形式来加载beans,并使用单元测试方式,测试效果。
@Configuration –>指明该类为JavaConfig类
@Bean–>在方法上,表示方法最终要返回一个对象,这个对象将会出现在IOC容器中【默认的,bean的ID为方法名】。所以注意ID的唯一性,且使用@Bean在IOC中生成的bean为单例的。对于同一类型的Bean多次使用@Bean最终产生的还是同一个bean.
如
public MobilePhone iphone(){
return new IphoneMobilePhoneImpl()
}
public MobilePhone anotherIphone(){
return new IphoneMobilePhoneImpl()
}
最终实际为同一iphone
接口类,模拟业务方法
package com.xbz.learn.spring.autowire; public interface MobilePhone { /** * 给XXX打电话 * @param phoneNumber */ public void callPerson(String phoneNumber); }
实现类
package com.xbz.learn.spring.autowire; /** * MobilePhone接口的iphone实现类 * @author xbz * */ public class IphoneMobilePhoneImpl implements MobilePhone{ public void callPerson(String phoneNumber) { System.out.println("iphone 正在向【"+phoneNumber+"】打电话"); } }
package com.xbz.learn.spring.autowire; 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.Bean; import org.springframework.context.annotation.Configuration; import com.xbz.learn.spring.autowire.IphoneMobilePhoneImpl; import com.xbz.learn.spring.autowire.MobilePhone; import com.xbz.learn.spring.autowire.XiaoMiPhone; @Configuration public class SpringJavaConfig { @Bean(name="iphone") public MobilePhone setIphone(){ return new IphoneMobilePhoneImpl(); } @Bean(name="xiaomi") public MobilePhone setXiaomiPhone(){ return new XiaoMiPhone(); } }
测试类
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.beans.factory.annotation.Qualifier; 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()@Qualifier("iphone") private MobilePhone iphone; @Autowired()@Qualifier("xiaomi") private MobilePhone xiaomi; @Test public void testJavaConfig(){ System.out.println("iphone:"+iphone); System.out.println("xiaomi:"+xiaomi); System.out.println("is same?"+(iphone==xiaomi)); 4000 } }
相关文章推荐
- 装配Bean:JavaConfig@Component@ComponentScan@Configuration
- 装配Bean:XML与JavaConfig混合装配
- 第2章 装配Bean---xml和javaConfig混合使用装配---笔记5
- 从零开始的spring 之 脱离web下的spring 上 (javaconfig装配bean)
- 【Spring 核心】装配bean(二) JavaConfig装配
- spring对于bean的javaconfig,xml,自动装配三种装配方式实现
- spring笔记:第二章(通过javaconfig类装配bean)
- Spring journey -- JavaConfig 装配 Bean
- spring实战-JavaConfig装配bean
- Spring Bean之JavaConfig自动化装配bean
- Spring in action 02 -- 装配 Bean(JavaConfig)遇到的问题
- Axis2(7):将Spring的装配JavaBean发布成WebService
- Java乔晓松-spring自动装配Bean的4种方式
- java Spring常用注解,自动扫描装配Bean
- Spring Java Configuration——用java代码来装配Spring
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- Unable to load configuration. - bean - jar:file:../../ComputerScience/JavaEE/workspace/.metadata解决办法
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- axis2开发webservice之将Spring的装配JavaBean发布成WebService
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/