• Spring容器装配Bean的三种方式


    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解Spring专栏—SpringBean装配。

    本章我们一起来探讨SpringBean的装配,所谓 装配“ 就是值将Bean安装Bean容器中并进行依赖关系配置,稍微提一下IOC控制反转就是指的安装这一过程中,而DI依赖指的是配置这一过程。本章我们就Spring应用中如何进行装配Bean进行讲解;如自动化装配Java配置装配XML配置装配方式进行介绍,但本章并不会介绍Spring项目全局配置方案,我们会在下一章中单独介绍Spring基于Java的全局配置和基于XML的全局配置的两种方案。本章提供三个完整源码测试,Github源码下载地址

    Spring的三种装配机制

    1. 隐式的Bean发现机制和自动装配
    2. 在Java中进行装配
    3. 在XML中进行装配

    值得一提的是,我们在项目中应该优先实用隐式的Bean发现机制和自动装配其次使用在Java中进行装配最后再使用在XML中进行装配

    隐式的Bean发现机制和自动装配隐式Bean发现和自动装配测试源码

    Spring从两个角度来实现自动化装配;组件扫描(Spring自动发现应用中上下文所需要的创建的Bean),自动装配(Spring自动满足Bean之间的依赖)

    • 使用@Component将普通Java类配置成SpringBean
    • 使用@Autowired(自动装配)使Spring满足Bean的依赖
    • 配置组件扫描包(组件扫描)
      • 在Java类中配置组件扫描

    @ComponentScan("com.jimisun.controller")

      • 在XML配置文件配置组件扫描

    <context:component-scan base-package="com.jimisun.controller,com.jimisun.service"/>

    @Component
    public class User {
    
        @Autowired
        private Article article;
    
        public void action() {
            article.action();
        }
    }
    注意:示例中使@Component将Java类声明成SpringBean,除了这一注解你还可以使用@Controller,@Service,@Repository等注解... 同样@Autowired也可使用其他注解来代替,这里为了简明介绍不再陈述。
     
    基于Java的Bean装配

    同样我们可以再Spring的Java配置类中对SpringBean进行配置

    • 使用 @Bean 注解将方法返回的实例对象添加到上下文中
    • @Bean返回的实例对象中可以通过构造器注入传入相关依赖
    @Configuration
    @ComponentScan("com.jimisun")
    public class WebConfig {
    
        @Bean
        public User user() {
            return new User(myArticle());
        }
    
        @Bean
        public MyArticle myArticle() {
            return new MyArticle();
        }
    
    }
    注意:如果你没有接触过基于java配置Bean的装配的话,不需要着急,这里只需要你理解SpringBean装配的全局信息,下章我们会更为详细的介绍。
     

    基于XML的Bean装配基于XML装配Bean完整源码 

    对于在XML中进行配置可能使我们经常使用的,在以前的Spring版本中几乎我们都是使用XML进行配置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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    
        <bean class="com.jimisun.spring.example.User" id="user">
            <constructor-arg ref="myArticle"/>
        </bean>
    
        <bean class="com.jimisun.spring.example.MyArticle" id="myArticle"></bean>
    
    </beans>
    注意:在实际应用中如何不想被海量的<bean>标签埋没前,你应当优先使用隐式的Bean发现机制和自动装配和在Java中进行装配,最后再选择使用在XML中配置。
     
    最后值得一提的是在实际项目中我们通常都会选择组合使用
    • 隐式的Bean发现机制和Java中进行装配进行组合
    • 隐式的Bean发现机制和XML配置进行组合
    这样便于我们更方便的配置Spring项目,下一章我们会针对全局的Spring项目的配置进行介绍。

    Java开发之上帝之眼系列教程其他文章


    勘误&感谢

      本系列文章资料来源很多出自于互联网和在下本身的见解,受限于个人技术能力水平和其他相关知识的限制,相关见解错误或者资料引用错误请各位帮助留言校正!引用资料多来自于互联网,在下在引用前会遵循各位前辈或者博主的引用说明表示感谢,但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正。

  • 相关阅读:
    jquery ajax和php实现返回值 json类型
    jQuery一句话实现多选框全选/取消
    九宫格拼图 支持44 55等
    php通过$_SERVER['HTTP_USER_AGENT']获取浏览器useAgent
    微信刮刮卡代码
    从QQ网站中提取的纯JS省市区三级联动
    Codeigniter+PHPExcel导出数据到Excel文件
    flv视频播放器停止时带图片
    html5+js实现刮刮卡效果
    解决Tensorflow 使用时cpu编译不支持警告:that this TensorFlow binary was not compiled to use: AVX AVX2
  • 原文地址:https://www.cnblogs.com/jimisun/p/9742293.html
Copyright © 2020-2023  润新知