欢迎查看 Java 开发之上帝之眼系列教程, 如果您正在为 Java 后端庞大的体系所困扰, 如果您正在为各种繁出不穷的技术和各种框架所迷茫, 那么本系列文章将带您窥探 Java 庞大的体系. 本系列教程希望您能站在上帝的角度去观察 (了解)Java 体系. 使 Java 的各种后端技术在你心中模块化; 让你在工作中能将 Java 各个技术了然于心; 能够即插即用. 本章我们来一起了解 Spring 专栏 - SpringBean 装配.
本章我们一起来探讨 SpringBean 的装配, 所谓 "装配" 就是值将 Bean 安装 Bean 容器中并进行依赖关系配置, 稍微提一下 IoC 控制反转就是指的安装这一过程中, 而 DI 依赖指的是配置这一过程. 本章我们就 Spring 应用中如何进行装配 Bean 进行讲解; 如自动化装配, Java 配置装配, xml 配置装配方式进行介绍, 但本章并不会介绍 Spring 项目全局配置方案, 我们会在下一章中单独介绍 Spring 基于 Java 的全局配置和基于 xml 的全局配置的两种方案. 本章提供三个完整源码测试, GitHub 源码下载地址
Spring 的三种装配机制
隐式的 Bean 发现机制和自动装配
在 Java 中进行装配
在 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 装配
基于 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 开发之上帝之眼系列教程其他文章
Java 开发之上帝之眼系列教程前言和章节目录汇总
重新来认识你的老朋友 Spring 框架
勘误 & 感谢
本系列文章资料来源很多出自于互联网和在下本身的见解, 受限于个人技术能力水平和其他相关知识的限制, 相关见解错误或者资料引用错误请各位帮助留言校正! 引用资料多来自于互联网, 在下在引用前会遵循各位前辈或者博主的引用说明表示感谢, 但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正.
来源: https://www.cnblogs.com/jimisun/p/9742293.html