SpringBoot 创建对象常见的几种方式
在 Spring Boot 中,将 Bean 对象添加到 IOC 容器中,通用的有下面几种方式:
- 使用 @Component、@Service、@Repository或@Controller注解
- 使用 @Configuration和@Bean注解
- 使用 @Import注解导入其他配置类
- 通过 ApplicationContext编程方式手动注册 Bean
1. 使用 @Component(或 @Service、@Repository、@Controller)注解
 
最常见的方式,Spring 会自动扫描并将带有这些注解的类注册为 Bean。
import org.springframework.stereotype.Component;@Component
public class User {public void say() {System.out.println("Hello User!");}
}
配置扫描路径(通常在 @SpringBootApplication 上已经启用了扫描,如果需要指定包路径,可以使用 @ComponentScan 注解):
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);}
}
在 Spring Boot 启动时,@Component 注解的类会自动注册为 Bean,并添加到 IOC 容器中。
2. 使用 @Configuration 和 @Bean 注解
 
通过在 @Configuration 注解的配置类中使用 @Bean 注解,可以手动将对象添加到 Spring 容器中。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class BeanConfig {@Beanpublic User user() {return new User();}
}
User 类:
public class user {public void say() {System.out.println("Hello User!");}
}
BeanConfig 类使用 @Bean 注解注册了一个 user 实例,Spring 会将其自动加入到 IOC 容器中。
3. 使用 @Import 注解导入配置类
 
@Import 注解可以导入其他配置类,将其配置的 Bean 添加到当前应用的 IOC 容器中。
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;@Configuration
@Import(BeanConfig.class)
public class MainConfig {// 通过 @Import 导入 BeanConfig 中的 Bean
}
MainConfig 类通过 @Import(BeanConfig.class) 导入了 BeanConfig 中定义的所有 Bean,这样 MyBean 也会被注册到 IOC 容器中。
4. 使用 ApplicationContext 编程方式手动注册 Bean
 
在某些特殊的场景中,可能需要手动编程注册 Bean,这时可以使用 AnnotationConfigApplicationContext 或 GenericWebApplicationContext 类。
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class ManualBeanRegistration {public static void main(String[] args) {// 创建 Spring 容器AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();// 注册配置类context.register(BeanConfig.class);// 启动容器context.refresh();// 获取并使用 BeanMyBean myBean = context.getBean(MyBean.class);myBean.printMessage();// 关闭容器context.close();}
}
通过 AnnotationConfigApplicationContext 显式地手动注册了 BeanConfig 配置类,并启动了 Spring 容器。
总结
- @Component注解(及其衍生注解- @Service、- @Repository、- @Controller)是最常用的方式,通过自动扫描自动将 Bean 注册到 IOC 容器中。
- @Configuration和- @Bean注解 可以在配置类中手动注册 Bean。
- @Import注解 可以将其他配置类中的 Bean 导入到当前配置类中。
- 手动注册 通过 ApplicationContext等类可以编程方式注册 Bean。