首页 技术 正文
技术 2022年11月18日
0 收藏 579 点赞 3,580 浏览 1772 个字

创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质。Spring装配Bean的三种主要机制:1.在XML中进行显示配置2.在java中进行显示配置3.隐式的bean发现机制和自动装配1.自动化装配  1.组件扫描:spring会自动发现上下文中创建的Bean  2.自动装配:Spring自动满足bean之间的依赖组件扫描

public interface Phone {
void speak();
}

@Component定义组件,@Component(“apple”)可以指定组件id

@Component
public class Apple implements Phone{
@Override
public void speak() {
System.out.println("apple speak");
}
}

 创建配置类:注解@ComponentScan启用了组件扫描,basePackages扫描指定单个包,多个包(basePackages ={“”,””})

@Configuration
//@ComponentScan(basePackages = "com.spring.ioc.autowiring")
@ComponentScan(basePackages = {"com.spring.ioc.autowiring","com.spring.di"})
public class PhoneConfig {
}

 这里也可以不用这个类配置@ComponentScan,可用xml配置

<!-- 启用组件扫描-->
<context:component-scan base-package="com.spring.ioc.autowiring"/>

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = PhoneConfig.class)
public class PhoneTest {
@Autowired
private Phone phone;
@Test
public void checkPhone(){
phone.speak();
Assert.assertNotNull(phone);
}
}

 自动装配

@Autowired
public class Xiaoming {
private Phone phone;
//这里不管是构造方法、set方法、普通方法@Autowired都能自动装配
@Autowired
public Xiaoming(Phone phone) {
this.phone = phone;
} public void speak(){
phone.speak();
}
}

 2.通过java代码装配bean代码如下:

public class XiaoMi implements Phone{
@Override
public void speak() {
System.out.println("小米。。。。。。");
}
}

创建配置类:

@Configuration
public class JavaConfig { @Bean
public Phone getPhone(){
return new XiaoMi();
}
}  

junit测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = JavaConfig.class)
public class JavaConfigTest {
@Autowired
private Phone phone;
@Test
public void checkPhone(){
phone.speak();
Assert.assertNotNull(phone);
}
}

也可以通过如下main测试

public static void main(String[] args) {
//加载java配置类获取Spring应用上下文
ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
XiaoMi xiaoMi= ac.getBean(XiaoMi.class);
xiaoMi.speak();
}

3.在XML中进行显示配置声明bean用<bean id=”xxx” class=”xxx”>标签

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,133
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297