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三种方式,因为我自己在学习的过程中发现,如果不对三种方式有一个全面的了解,经常会读不懂别人的代码,也读不懂自己公司的项目。


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

相关文章
|
4天前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
20 0
|
28天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
35 0
|
21天前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
10天前
|
缓存 Java Spring
实战指南:四种调整 Spring Bean 初始化顺序的方案
本文探讨了如何调整 Spring Boot 中 Bean 的初始化顺序,以满足业务需求。文章通过四种方案进行了详细分析: 1. **方案一 (@Order)**:通过 `@Order` 注解设置 Bean 的初始化顺序,但发现 `@PostConstruct` 会影响顺序。 2. **方案二 (SmartInitializingSingleton)**:在所有单例 Bean 初始化后执行额外的初始化工作,但无法精确控制特定 Bean 的顺序。 3. **方案三 (@DependsOn)**:通过 `@DependsOn` 注解指定 Bean 之间的依赖关系,成功实现顺序控制,但耦合性较高。
实战指南:四种调整 Spring Bean 初始化顺序的方案
|
14天前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
27 1
|
28天前
|
Java 测试技术 Windows
咦!Spring容器里为什么没有我需要的Bean?
【10月更文挑战第11天】项目经理给小菜分配了一个紧急需求,小菜迅速搭建了一个SpringBoot项目并完成了开发。然而,启动测试时发现接口404,原因是控制器包不在默认扫描路径下。通过配置`@ComponentScan`的`basePackages`字段,解决了问题。总结:`@SpringBootApplication`默认只扫描当前包下的组件,需要扫描其他包时需配置`@ComponentScan`。
|
30天前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
123 1
|
5月前
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
55 2
|
1月前
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细解析Spring Bean的生命周期及其核心概念,并深入源码分析。Spring Bean是Spring框架的核心,由容器管理其生命周期。从实例化到销毁,共经历十个阶段,包括属性赋值、接口回调、初始化及销毁等。通过剖析`BeanFactory`、`ApplicationContext`等关键接口与类,帮助你深入了解Spring Bean的管理机制。希望本文能助你更好地掌握Spring Bean生命周期。
72 1
|
5月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
62 0