多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Spring Boot 列出 bean > 原文: [http://zetcode.com/articles/springbootlistbeans/](http://zetcode.com/articles/springbootlistbeans/) 在本教程中,我们列出了存储在 Spring 容器中的所有 bean,包括内置和自定义 bean。 Spring 是流行的 Java 应用框架,而 Spring Boot 是 Spring 的演进,可帮助您以最少的精力创建独立的,生产级的基于 Spring 的应用。 Spring 核心容器创建并管理 Bean。 可以通过`ApplicationContext`获得这些 bean。 在以下应用中,我们列出了所有存储的 bean。 该应用是命令行 Spring Boot 应用。 ```java $ tree . ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── zetcode │ │ ├── Application.java │ │ ├── bean │ │ │ └── MyBean.java │ │ └── MyRunner.java │ └── resources └── test └── java ``` 这是 Spring Boot 应用的项目结构。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>SpringBootListBeans</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <name>SpringBootListBeans</name> </project> ``` 这是 Maven 构建文件。 `spring-boot-starter`是包括自动配置支持,日志记录和 YAML 在内的核心启动器。 该应用打包到一个 JAR 文件中。 `MyBean.java` ```java package com.zetcode.bean; import org.springframework.stereotype.Component; @Component public class MyBean { private final String message = "This is MyBean"; public String getMessage() { return message; } } ``` `MyBean`是由 Spring 创建和管理的自定义 bean。 Spring 自动检测由`@Component`注解修饰的类,并将其存储在 Spring 容器中。 `MyRunner.java` ```java package com.zetcode; import com.zetcode.bean.MyBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @Component public class MyRunner implements CommandLineRunner { @Autowired private ApplicationContext appContext; @Autowired private MyBean myBean; @Override public void run(String... args) throws Exception { System.out.println(myBean.getMessage()); System.out.println("List of beans:"); String[] beans = appContext.getBeanDefinitionNames(); for (String bean : beans) { System.out.println(bean); } } } ``` `CommandLineRunner`接口指示当`SpringApplication`中包含 bean 时应运行它。 它可以用来创建 Spring Boot 命令行应用。 ```java @Component public class MyRunner implements CommandLineRunner { ``` `MyRunner`也是一个 Spring bean,并在 bean 中列出。 ```java @Autowired private ApplicationContext appContext; ``` `ApplicationContext`将以`@Autowired`注解注入到字段中。 ```java @Autowired private MyBean myBean; ``` 同样,我们注入自定义 bean。 ```java System.out.println(myBean.getMessage()); ``` 在这里,我们打印存储在自定义 bean 中的消息。 ```java String[] beans = appContext.getBeanDefinitionNames(); ``` 从应用上下文中,我们获得一个带有`getBeanDefinitionNames()`的 bean 名称数组。 ```java for (String bean : beans) { System.out.println(bean); } ``` Bean 名称将打印到控制台。 `Application.java` ```java package com.zetcode; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 在`Application`中,设置 Spring Boot 应用。 设置 Spring Boot 应用。 `@SpringBootApplication`启用自动配置和组件扫描。 Spring 将自动扫描 Bean,并同时拾取`MyBean`和`MyRunner`。 ```java $ mvn spring-boot:run -q ... This is MyBean List of beans: org.springframework.context.annotation.internalConfigurationAnnotationProcessor org.springframework.context.annotation.internalAutowiredAnnotationProcessor org.springframework.context.annotation.internalRequiredAnnotationProcessor org.springframework.context.annotation.internalCommonAnnotationProcessor org.springframework.context.event.internalEventListenerProcessor org.springframework.context.event.internalEventListenerFactory application org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory myRunner myBean ... ``` 我们运行该应用。 `-q` Maven 选项关闭 Maven 消息。 在本教程中,我们列出了存储在 Spring 容器中的所有 bean。 您可能也对相关教程感兴趣: [Spring Boot Bean](/articles/springbootbean/) , [Spring Boot `@Qualifier`注解](/articles/springbootqualifier/),[在 Spring Boot 中提供静态内容](/springboot/static/), [Spring Boot `DataSourceBuilder`教程](/springboot/datasourcebuilder/), [Spring Boot iText 教程](/articles/springbootitext/), [Java 教程](/lang/java/)。