@Bean和@Component

@Bean和@Component在Spring中用于创建bean实例,@Component主要在类级别定义bean,功能较为简单;@Bean则功能更丰富,可在方法上使用,允许在@Configuration注解的类中通过方法调用来注入依赖,确保单例不被破坏。@Bean有两种模式:Lite Mode和Full Mode,Full Mode通过Cglib代理确保依赖注入时保持单例。
摘要由CSDN通过智能技术生成

@Bean和@Component都是用于创建一个bean实例.
区别于@Component只能定义bean名称,且只能用于类上

//只能用于类上
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface Component {
   

	 //对于被自动定位转换为spring bean的组件,的逻辑组件名的建议
	String value() default "";
}

,这样如果只有@Component ,应用想给jar包中的类创建一个bean给spring管理,就没那么简单了.

而@bean属性更丰富,还可以定义在方法上,这样就填补了@component功能的空白

@Target({
   ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
   


	@AliasFor("name")
	String[] value() default {
   };


	@AliasFor("value")
	String[] name() default {
   };

	
	@Deprecated
	Autowire autowire() default Autowire.NO;

	
	boolean autowireCandidate() default true;

	
	String initMethod() default "";

	
	String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;

}

同时也支持在类被@Configuration注解定义的类中的被@bean定义的方法内,直接调用另一个被@bean注解定义的方法来注入依赖的用法

@Configuration
public class QuartzConfig {
   
    @Bean
    MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean() {
   
        MethodInvokingJobDetailFactoryBean bean = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值