第四章:Spring框架Bean的三种装配(基础)

jimisun 2018-10-04 原文

第四章: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开发之上帝之眼系列教程其他文章


勘误&感谢

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

posted on 2018-10-04 15:41 jimisun 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为jimisun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jimisun/p/9742293.html

第四章:Spring框架Bean的三种装配(基础)的更多相关文章

  1. 工作流中的流程追溯!详细解析Activiti框架中的历史组件

    Activit中的历史简介 历史: Activiti中的一个组件,可以捕获发生在进程执行中的信息并永久的保存. […]...

  2. 重新来认识你的老朋友Spring框架

    重新来认识你的老朋友Spring框架 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体 […]...

  3. 开源项目之架构分享

    此次分享是我当初在开发某个系统时,参考的一些开源项目架构的思路和风格。 第一个是Jeesite,它的架构风格如 […]...

  4. Mybatis初步认识

    加油加油加油 分三层 第一章 1.三层架构   界面层:和用户打交道,接收用户的请求参数明显是处理结果的(js […]...

  5. 配置Spring项目上传的两种方式(全解析)

    配置Spring项目上传的两种方式(全解析) 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端 […]...

  6. mybatis-plus 代码生成

    之前采用maven-generator 生成代码,在配置文件上因为从单模块到多模块时出现问题, 改用mybat […]...

  7. Dubbo服务注册与发现

    目录 一、分布式基本理论 1.1、分布式基本定义 1.2 架构发展演变 1.3、RPC简介 二、Dubbo理论 […]...

  8. SpringCloud之Gateway

    一、为什么选择SpringCloud Gateway而不是Zuul? Gateway和Zuul的职责一样,都承 […]...

随机推荐

  1. 自定义input文件上传样式

    文件上传是我们经常会用到的功能,但是原生的input样式太丑了,能不能自定义一个input文件上传样式呢?   […]...

  2. 网络编程之Socket

    网络编程之Socket 我们已经知道,假设我现在要写一个程序,给另一台计算机发数据,必须通过tcp/ip协议 […]...

  3. css的继承和层叠

    css的继承和层叠 标签(空格分隔): css css称为层叠样式表,CSS有两大特性:继承性和层叠性,本章简 […]...

  4. CSS实现背景透明,文字不透明,兼容所有浏览器

    在PC端遇到了透明背景和透明图片的问题,其实以前也遇到过,只是没有总结起来,就忘记了,这次又撞墙了,必须记录下 […]...

  5. 小心 Enum Parse 中的坑

    小心 Enum Parse 中的坑 小心 Enum Parse 中的坑 Intro 最近使用枚举的时候,踩了一 […]...

  6. JIRA中的核心概念 – sophia194910

    JIRA中的核心概念 2018-01-15 17:07  sophia194910  阅读(1923)  评论 […]...

  7. 惠集(灰机)淘客CMS 建站教程

    1、搭建展示站 [https://gitee.com/diyuzz/HuiJi_TBK_Show]   这只是 […]...

  8. JAVA常见面试题问题简述(持续更新中)

    JAVA常见面试题问题简述 1. springcloud和dubbo的区别   ①相比之下springclou […]...

展开目录

目录导航