Spring的@Bean注解

Spring @Bean注解应用于方法,用于指定该方法返回一个由Spring容器管理的Bean。Spring Bean注解通常在配置类的方法中声明。在这种情况下,Bean方法可以通过直接调用同一类中的其他@Bean方法来引用它们。

春季 @Bean 示例

假设我们有一个如下所示的简单类。

package com.Olivia.spring;

public class MyDAOBean {

	@Override
	public String toString() {
		return "MyDAOBean"+this.hashCode();
	}
}

这是一个配置类,在其中我们定义了一个@Bea
n方法用于MyDAOBean类。

package com.Olivia.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyAppConfiguration {

	@Bean
	public MyDAOBean getMyDAOBean() {
		return new MyDAOBean();
	}
}

我们可以使用下面的代码片段从Spring上下文中获取MyDAOBean bean。

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.Olivia.spring");
context.refresh();
		
//Getting Bean by Class
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);

Spring Bean Name in Chinese can be paraphrased as “春天的Bean名称”

我们可以指定@Bean的名称,并使用该名称从Spring容器中获取它们。假设我们定义了一个名为MyFileSystemBean的类:

package com.Olivia.spring;

public class MyFileSystemBean {

	@Override
	public String toString() {
		return "MyFileSystemBean"+this.hashCode();
	}
	
	public void init() {
		System.out.println("init method called");
	}
	
	public void destroy() {
		System.out.println("destroy method called");
	}
}

在配置类中定义一个@Bean方法。

@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
	return new MyFileSystemBean();
}

我们可以通过使用bean的名称从上下文中获取这个bean。

MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");

MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");

Spring的@Bean的initMethod和destroyMethod

我们还可以指定Spring Bean的初始化方法和销毁方法。当创建Spring Bean时,会调用初始化方法;而当上下文关闭时,会调用销毁方法。

@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
	return new MyFileSystemBean();
}

当我们调用上下文刷新方法时,你将会注意到”init”方法被调用,而当我们调用上下文关闭方法时,”destroy”方法被调用。

总结

在注解驱动的Spring应用程序中,Spring @Bean注解被广泛使用。

你可以从我们的GitHub仓库下载完整的Spring项目。

广告
将在 10 秒后关闭
bannerAds