1. 9IM首页
  2. 热点

Spring大神之路(13)–在JavaConfig配置中装配bean

概述

与注解配置类似,JavaConfig中也是自动装配Bean,同样可以按类型或者按名称自动装配,相信如果您对前面xml和注解方式已经比较了解的话,本篇就不用赘述太多了,此处直接上代码,需要讲解的会在注释中给出。

按类型自动装配实例

干干净净的歌手类、舞者类、舞台类

由于注入工作是在javaconfig中完成,所以类上无须添加特殊信息。

package org.maoge.javaconfigssemble;
//普通歌手类
public class Singer {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
package org.maoge.javaconfigssemble;
//普通舞者类
public class Dancer {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
package org.maoge.javaconfigssemble;
//普通舞台类
public class Stage {
	private Singer singer;
	private Dancer dancer;
	public Singer getSinger() {
		return singer;
	}
	public void setSinger(Singer singer) {
		this.singer = singer;
	}
	public Dancer getDancer() {
		return dancer;
	}
	public void setDancer(Dancer dancer) {
		this.dancer = dancer;
	}
}
配置bean并自动装配
package org.maoge.javaconfigssemble;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration // 该类是一个配置类,Spring需要扫描该类中bean
public class BeanConfiguration {
	@Bean // 生成一个命名为daolang的bean
	public Singer daolang() {
		Singer singer = new Singer();
		singer.setName("刀郎");
		return singer;
	}
	@Bean // 生成一个命名为liujia的bean
	public Dancer liujia() {
		Dancer dancer = new Dancer();
		dancer.setName("刘迦");
		return dancer;
	}
	@Bean(autowire = Autowire.BY_TYPE) // 指定按类型自动装配该bean
	public Stage stage() {
		Stage stage = new Stage();
		return stage;
	}
}
测试
package org.maoge.javaconfigssemble;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfiguration.class);
		Stage stage = (Stage) context.getBean("stage");
		System.out.println(stage.getSinger().getName());
		System.out.println(stage.getDancer().getName());
	}
}

上面代码成功输入如下,证明按类型自动装配成功。

刀郎
刘迦

按名称自动装配

我们将装配方式改为:@Bean(autowire = Autowire.BY_NAME)按名称,运行主类提示空指针,那是因为我们生成的bean命名分别为daolang、liujia,但是我们Stage类中的属性名称为singer、dancer,所以无法按名称自动装配。

我们可以将bean的id改为singer、dancer,或者将State类的属性改为daolang、liujia,这样名字匹配后,就可以自动装配了。

此处过于简单,不在具体出示代码。

总结

装配确实比较繁琐,所以这三个章节我写起来也比较烦啊,但是这是Spring的基础,还是要在理解的基础上掌握吧。

为了让大家对Spring有一个全面的了解,我一直是同时介绍xml、注解、JavaConfig三种方式,因为我自己在学习的过程中发现,如果不对三种方式有一个全面的了解,经常会读不懂别人的代码,也读不懂自己公司的项目。

哈哈,其实就是三种具体实现方式,多写写就适应了。

原创文章,作者:9IM,如若转载,请注明出处:https://www.9im.cn/952.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注