首先,什么是bean?bean是一个核心的概念,它是由IOC(控制反转)容器管理的实例对象,
简单的说,就是通过配置文件或者注解的形式去标记的java类的实例,然后由Spring去对这些实例进行创建,初始化,装配,依赖注入和生命周期的管理。
实例化:Spring通过反射机制创建Bean的实例。
依赖注入(DI):Spring自动将Bean依赖的其他Bean注入到需要它们的地方,无需硬编码创建依赖对象。
配置与管理:Bean的配置可以在XML文件中或通过注解(如@Component、@Service、@Repository、@Controller)完成,Spring读取这些配置来了解如何创建和管理Bean。
生命周期管理:Spring管理Bean从创建到销毁的整个过程,包括初始化回调、销毁回调等。
怎么使用Bean?
1.定义Bean:
XML配置:在Spring的XML配置文件中使用<bean>标签定义。
<bean id="exampleBean" class="com.example.ExampleClass"/>
注解配置:在类上使用@Component系列注解(如@Service、@Repository、@Controller),并在配置类中使用@Bean注解。
@Service
public class ExampleService {}
@Configuration
public class AppConfig {
@Bean
public ExampleService exampleService() {
return new ExampleService();
}
}
2.注入Bean:
Field注入:直接在需要使用Bean的类的字段上使用@Autowired或@Resource注解。
@Autowired
private ExampleService exampleService;
Setter注入:在setter方法上使用@Autowired注解。
private ExampleService exampleService;
@Autowired
public void setExampleService(ExampleService exampleService) {
this.exampleService = exampleService;
}
构造器注入:提高代码的可测试性和清晰度。
private final ExampleService exampleService;
@Autowired
public YourClass(ExampleService exampleService) {
this.exampleService = exampleService;
}
3.使用Bean:一旦Bean被Spring容器创建并注入到需要它的类中,就可以直接使用这个Bean实例来执行业务逻辑。
什么是bean的生命周期?
Bean的生命周期
Bean定义的载入:
Spring容器从配置源(如XML配置文件、注解、Java配置类)中读取Bean的定义信息。
Bean实例化:
根据Bean定义,Spring使用Java反射机制创建Bean实例。这一步骤相当于执行了new操作。
属性注入(依赖注入DI):
Spring根据Bean定义中的依赖关系,通过反射或JDK动态代理为Bean实例注入所依赖的其他Bean或值。这包括自动装配(如@Autowired)和显式配置的属性值。
Aware接口回调:
如果Bean实现了Spring的Aware接口(如BeanNameAware、BeanFactoryAware、ApplicationContextAware等),Spring会调用这些接口的方法,让Bean知道它所在的环境信息,如Bean的名称、BeanFactory或ApplicationContext。
初始化前处理:
在任何自定义初始化代码执行之前,如果Bean配置了@PostConstruct注解的方法,或在XML中定义了init-method,Spring会调用这些方法。
初始化Bean:
Spring调用初始化方法来完成Bean的初始化工作。这包括实现InitializingBean接口的afterPropertiesSet方法,或者自定义的初始化方法。
Bean注册到容器:
初始化完成后,Bean被注册到Spring容器中,此时Bean可以被应用程序使用。
使用Bean:
应用程序通过Spring容器获取Bean实例并使用它。
销毁前处理:
当容器关闭或Bean不再需要时,如果Bean实现了DisposableBean接口或配置了destroy-method,Spring会在Bean销毁前调用这些方法。
Bean销毁:
最后,Spring负责清理和销毁Bean实例,释放资源。
什么是IOC?
在 Spring 中,类的实例化、依赖的实例化、依赖的传入都交由 Spring Bean 容器控制,而不是用 new 方式实例化对象、通过非构造函数方法传入依赖等常规方式。实质的控制权已经交由程序管理,而不是程序员管理,所以叫控制反转。
标签:初始化,实例,Spring,exampleService,SpringBean,Bean,理解,使用,ExampleService From: https://blog.csdn.net/mjmzsq777/article/details/140208024