这篇“Spring怎么将一个的类配置成Bean”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring怎么将一个的类配置成Bean”文章吧。
1.第三方的bean不能改写源码,在类上加@Component注解
2.只能引入该类进行反射创建,再更改其BeanDefinition信息
1.@Bean方式,实例化过程可以更改
2.@Import导入类,实例化过程不能干预
3.@Import导入ImportBeanDefinitionRegistrar实现类,可以给BeanDefinition设置属性等信息
4.beanDefinition注册后置处理器(BeanDefinitionRegistryPostProcessor),不需要@Import引入,但顺序在后面
package com.learning.bean; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @Author wangyouhui * @Description 配置类 **/ @Configuration public class BeanConfig { @Bean public DruidDataSource dataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setUsername("root"); return dataSource; } }
package com.learning.bean; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; /** * @Author wangyouhui * @Description 配置类 **/ @Configuration @Import(DruidDataSource.class) public class BeanConfig2 { }
package com.learning.bean; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.core.type.AnnotationMetadata; /** * @Author wangyouhui * @Description 配置类 **/ @Configuration @Import(ImportBeanDefinitionRegistrar.class) public class BeanConfig3 { } class ImportBeanDefinitionRegistrar implements org.springframework.context.annotation.ImportBeanDefinitionRegistrar{ @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { // BeanDefinition存储Bean的描述信息,决定Bean生产方式 RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(DruidDataSource.class); rootBeanDefinition.getPropertyValues().add("password", "root"); registry.registerBeanDefinition("dataSource", rootBeanDefinition); } }
package com.learning.bean; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.stereotype.Component; /** * @Author wangyouhui * @Description beanDefinition注册后置处理器 **/ @Component public class BeanDefinitionRegistryPostProcessor implements org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException { RootBeanDefinition beanDefinition = new RootBeanDefinition(); beanDefinition.getPropertyValues().add("password", "root"); beanDefinitionRegistry.registerBeanDefinition("dataSource", beanDefinition); } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { } }
以上就是关于“Spring怎么将一个的类配置成Bean”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。