Spring之路(13)--在JavaConfig配置中装配bean

简介: 本文目录1. 概述2. 按类型自动装配实例2.1 干干净净的歌手类、舞者类、舞台类2.2 配置bean并自动装配2.3 测试3. 按名称自动装配4. 总结

1. 概述

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


2. 按类型自动装配实例

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

由于注入工作是在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;

}

}


2.2 配置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;

}

}


2.3 测试

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());

}

}

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


刀郎

刘迦


3. 按名称自动装配

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


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


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


4. 总结

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


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


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

相关文章
|
1天前
|
Java 应用服务中间件 Maven
ContextLoaderListener在Spring应用中的作用与配置方法
ContextLoaderListener在Spring应用中的作用与配置方法
|
1天前
|
存储 Java 开发工具
Spring Boot中的配置中心实现
Spring Boot中的配置中心实现
|
1天前
|
Java 应用服务中间件 测试技术
Spring Boot中最佳实践:数据源配置详解
Spring Boot中最佳实践:数据源配置详解
|
1天前
|
存储 Java 数据库
Spring Boot中如何配置和使用多数据源
Spring Boot中如何配置和使用多数据源
|
1天前
|
监控 安全 Java
Spring Boot中的安全性配置详解
Spring Boot中的安全性配置详解
|
5天前
|
Java
springboot自定义拦截器,校验token
springboot自定义拦截器,校验token
20 6
|
4天前
|
Java 数据库连接 数据库
Spring Boot 集成 MyBatis-Plus 总结
Spring Boot 集成 MyBatis-Plus 总结
|
2天前
|
NoSQL 搜索推荐 Java
使用Spring Boot实现与Neo4j图数据库的集成
使用Spring Boot实现与Neo4j图数据库的集成
|
6天前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
15 4