Springboot中定义bean的八种方式



/**
 * @author xushuai
 * @date 2023年04月29日 12:38
 */
public class BeanTest {
    //1.@Bean
    @Bean
    public BeanTest beanTest(){
        return new BeanTest();
    }

}
//2. @Component不能等价于@controller ,因为他是无法被调用到的,只是一个普通的bean
@Component
class BeanTestComponent {


}
//3@Controller,@Service,@Repository,@RestController @Controller注解在SpringMvc中有特殊的作用
@Controller
class BeanTestController {


}
//4.@ControllerAdvice,@RestControllerAdvice 底层实现不是用的SpringAop那一套 ,但是他本身想当于自动实现了aop的思想
//相当于对于controller的切面可以绑定PropertyEdit
//例如实现ResponseBodyAdvice 相当于在响应体可以再做一层处理
@ControllerAdvice
class BeanTestControllerAdvice implements ResponseBodyAdvice {


    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return false;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        //在返回响应体之前做处理,做一些特殊的处理

        return body;
    }
}
//5 @Configuration 主要标识是一个配置bean,利用这个可以对spring进行配置,比如扫描路径,定义其他的bean
@Configuration
class BeanTestConfiguration {
   //在里面可以用@bean去定义一些其他的bean

}
//6@Import将类倒入到Spring容器中,可以将BeanTest也变成一个bean
@Import(BeanTest.class)
class BeanTestImport {

}

//7@BeanDefinition 最后用@Import导入这个类
//@Import(BeanTestTwo.class)
 class BeanTestTwo implements ImportBeanDefinitionRegistrar {
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition();
        AbstractBeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();
        beanDefinition.setBeanClass(BeanDefinitionTest.class);
        registry.registerBeanDefinition("xushuai",beanDefinition);
    }
}
//8.bean标签 然后用@ImportResource("classpath:spring.xml)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值