# Spring 使用注解配置 Bean

> 原文： [https://howtodoinjava.com/spring5/core/spring-bean-java-config/](https://howtodoinjava.com/spring5/core/spring-bean-java-config/)

学习使用 Java 配置创建 Spring Bean，并使用任何独立应用程序的注解。 我们将学习如何在不扫描[组件注解](https://howtodoinjava.com/spring/spring-core/how-to-use-spring-component-repository-service-and-controller-annotations/)和使用`@Bean`注解的情况下创建它。

## 1\. 带有组件扫描的注解配置

使用组件扫描创建 bean 可以分两个步骤完成。

#### 1.1. 用相应的组件注解为 bean 注解

我们将酌情使用以下四个注解之一。

*   `@Component`
*   `@Repository`
*   `@Service`
*   `@Controller`

> 阅读更多：[Spring 组件注解](https://howtodoinjava.com/spring-core/how-to-use-spring-component-repository-service-and-controller-annotations/)

`EmployeeManagerImpl.java`

```java
package com.howtodoinjava.spring.service.impl;

import org.springframework.stereotype.Service;
import com.howtodoinjava.spring.model.Employee;
import com.howtodoinjava.spring.service.EmployeeManager;

@Service
public class EmployeeManagerImpl implements EmployeeManager {

	@Override
	public Employee create() {
		Employee emp =  new Employee();
		emp.setId(1);
		emp.setName("Lokesh");
		return emp;
	}
}

```

#### 1.2. 在`@ComponentScan`注解中包含 bean 程序包

`AppConfig.java`

```java
@Configuration
@ComponentScan(basePackages = "com.howtodoinjava.spring.service")
public class AppConfig {

}

```

#### 1.3. 示例

```java
package com.howtodoinjava.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.howtodoinjava.spring.model.Employee;
import com.howtodoinjava.spring.service.EmployeeManager;

public class Main 
{
    public static void main( String[] args )
    {
    	//Method 1
    	//ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);

    	//Method 2
    	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.register(AppConfig.class);
        ctx.refresh();

    	EmployeeManager empManager = ctx.getBean(EmployeeManager.class);
    	Employee emp = empManager.create();

    	System.out.println(emp);
    }
}

```

程序输出：

`Console`

```java
Employee [id=1, name=Lokesh]

```

## 2\. 使用`@Bean`和`@Configuration`注解

要使用`@Bean`注解创建 spring 应用程序内容，请使用以下步骤：

#### 2.1. 创建 Java Bean 类（无需注解或任何其他操作）

`EmployeeManagerImpl.java`

```java
public class EmployeeManagerImpl implements EmployeeManager {

	@Override
	public Employee create() {
		Employee emp =  new Employee();
		emp.setId(1);
		emp.setName("Lokesh");
		return emp;
	}
}

```

#### 2.2. 在配置类中创建`@Bean`注解方法

`AppConfig.java`

```java
package com.howtodoinjava.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.howtodoinjava.spring.service.EmployeeManager;
import com.howtodoinjava.spring.service.impl.EmployeeManagerImpl;

@Configuration
public class AppConfig {

    @Bean
    public EmployeeManager employeeManager() {
        return new EmployeeManagerImpl();
    }

}

```

#### 2.3. 示例

```java
package com.howtodoinjava.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.howtodoinjava.spring.model.Employee;
import com.howtodoinjava.spring.service.EmployeeManager;

public class Main 
{
    public static void main( String[] args )
    {
    	//Method 1
    	//ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);

    	//Method 2
    	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.register(AppConfig.class);
        ctx.refresh();

    	EmployeeManager empManager = ctx.getBean(EmployeeManager.class);
    	Employee emp = empManager.create();

    	System.out.println(emp);
    }
}

```

程序输出：

`Console`

```java
Employee [id=1, name=Lokesh]

```

这就是使用纯 Java 代码和注解创建 Spring bean 的两种简单方法。

学习愉快！

[下载源码](https://github.com/lokeshgupta1981/spring-core/tree/master/src/main/java/com/howtodoinjava/core/demo/beans)