文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring Bean的定义概念和使用方法是什么

2023-07-06 00:57

关注

本篇内容介绍了“Spring Bean的定义概念和使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

定义

Spring bean 对象是构成应用程序的支柱,也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的。

创建Bean

基于XML配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd">    <bean id="beanDemoJay" class="demo.BeanDemoJay"/></beans>

基于注解扫描的配置

从 Spring 2.5 开始就可以使用注解来配置依赖注入,在可以使用基于注解的配置之前,我们将需要在我们的 Spring 配置文件中启用它。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context.xsd">    <!-- 开启基于注解的配置 -->    <context:annotation-config/>    <!-- bean definitions go here --></beans>

当开启后,将可以在代码上使用注解,这表明 Spring 应该自动连接值到属性,方法和构造函数。如下是常用的注解:

序号说明
1@Required 注解应用于 bean 属性的 setter 方法。
2@Autowired 注解可以应用到 bean 属性的 setter 方法,非 setter 方法,构造函数和属性。
3@Qualifier通过指定确切的将被连线的 bean,@Autowired 和 @Qualifier 注解可以用来删除混乱。
4JSR-250 AnnotationsSpring 支持 JSR-250 的基础的注解,其中包括了 @Resource,@PostConstruct 和 @PreDestroy 注解。

基于Java的配置

基于 Java 的配置,可以使你在不用配置 XML 的情况下编写大多数的 Spring,主要通过 @Configuration 和 @Bean 等注解。

Component系列
注解说明
@Component最普通的一个注解,一般用于把普通pojo实例化到spring容器中。@Controller 和 @Service 和@Repository 是它的特殊情况,只是作为一个普通的类,不需要特殊归类时,比较适合采用@Component注解。
@Controller用于标注控制层,表示向控制层注入服务层的数据
@Service用于标注服务层,来进行业务的逻辑处理,在服务层注入DAO层数据
@Repository用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
@Configuration用于定义配置类,可替换xml配置文件,也可以理解为Spring配置文件当中的上下文。
依附于@Configuration的注解

@Bean 创建Deom

@Configurationpublic class Demo {    @Bean    public Demo demo(){        return new Demo();    }}

@Import 创建Cofing

@Configuration@Import(Config.class)public class Demo {}

@Import.ImportSelector 选择器,传入@Import注解所在类Demo上所有的注解信息,返回要导入的类名

@Configuration@Import(ImportSelector_.class)public class Demo {   }public class ImportSelector_ implements ImportSelector {    @Override    public String[] selectImports(AnnotationMetadata importingClassMetadata) {        return new String[]{"com.spring.demo.beanlifecycle.Demo"};    }}

@Impport.ImportBeanDefinitionRegistrar Bean定义注册器,传入@Import注解所在类Demo上所有的注解信息:

Mybatis的Mapper接口就是用这种方式将Bean定义注册到Spring上下文的

@Configuration@Import(ImportBeanDefinitionRegistrar_.class)public class Demo {}public class ImportBeanDefinitionRegistrar_ implements ImportBeanDefinitionRegistrar {    @Override    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {        BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Bean.class).setInitMethodName("init").setDestroyMethodName("destroy").getBeanDefinition();        registry.registerBeanDefinition("bean", beanDefinition);        System.out.println("registerBeanDefinitions: " + beanDefinition);    }}
FactoryBean

当通过“factoryBean”获取实例时,FactoryBean会调用getObject()方法;

当通过“&factoryBean”获取实例时,返回FactoryBean的实例;

当通过Demo.class来获取bean实例时,调用factoryBean的getObjectTyoe()来获取类型。

@Configurationpublic class Demo {    @Bean    public FactoryBean_ factoryBean(){        return new FactoryBean_();    }}public class FactoryBean_ implements FactoryBean {    @Override    public Object getObject() throws Exception {        return new Demo();    }    @Override    public Class<?> getObjectType() {        return Demo.class;    }}

“Spring Bean的定义概念和使用方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯