Bean作用域(Bean Scope)

<!--显式设置单例模式-->
<bean id="accountService" class="com.something.DefaultAccountService" scope="singleton"/>

  • prototype【原型模式】:每个对象都有自己的bean
<bean id="accountService" class="com.something.DefaultAccountService" scope="prototype"/>



request、session、application均只在web开发中使用到

Bean自动装配

  • 自动装配:Spring满足Bean依赖的一种方式
  • Spring会在上下文中自动寻找并自动给bean装配属性

Spring中的三种装配方式

  1. xml中显式的配置
  2. java中显式的配置
  3. 隐式的自动装配【重点】

测试

  • 搭建环境
    • 新的普通Maven项目
    • 编写实体类【一人有一猫一狗】
/**
* @author Iris 2021/8/11
*/
public class Cat { public void shout() {
System.out.println("Miao");
}
}
public class Dog { public void shout() {
System.out.println("Wang");
}
}
public class Human {
private Dog dog;
private Cat cat;
private String name; Setter&Getter
toString();
}

ByName自动装配实现

<!--
byName:会自动在容器上下文中查找,自己对象set方法后的值对应的bean-id
-->
<bean class="cn.iris.pojo.Human" id="human" autowire="byName">
<property name="name" value="iris"/>
</bean>

ByType自动装配实现

<!--
byName:会自动在容器上下文中查找,自己对象属性类型相同的bean
-->
<bean class="cn.iris.pojo.Human" id="human" autowire="byType">
<property name="name" value="iris"/>
</bean>

注意点

  • byName自动装配时,id需与set方法后的值相同且唯一
  • byType自动装配时,需保证属性type唯一

注解实现自动装配

注解开发不一定比xml配置更好,取决于使用者和使用情况

使用注解步骤:

  1. 导入约束
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd"> </beans>
  1. 配置注解的支持【手动高亮
<context:annotation-config/>

@Autowired

  • Autowired默认注入为byType,当同种类型数目>1时,再根据byName匹配注入
  • 【类属性/set方法】上使用即可
  • 使用后可不写set方法,前提:自动装配的属性在IoC容器中存在且符合byName
  • require(boolean)
    • false:显式设置false说明该对象可为null;
    • true:对象不可为空
@Autowired
private Dog dog;
@Autowired
private Cat cat;

@Nullable

  • 被标记字段可为null

@Qualifier

  • 添加对象id

@Resource

  • 默认byName匹配注入

Spring学习笔记-Bean的更多相关文章

  1. Spring 学习笔记 Bean的作用域

    在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域.作用域将对Bean的生命周期和创建方式产生影响.在低版本的Spring中,仅有两个作用域 ...

  2. Spring 学习笔记---Bean的生命周期

    生命周期图解 由于Bean的生命周期经历的阶段比较多,我们将通过一个图形化的方式进行描述.下图描述了BeanFactory中Bean生命周期的完整过程: Bean 的生命周期从Spring容器着手实例 ...

  3. Java Spring学习笔记----Bean的依赖注入(设值注入方式)1

    Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值:另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值: 1.设值注入方 ...

  4. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  5. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  6. Spring学习笔记2——表单数据验证、文件上传

    在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...

  7. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  8. 【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat

    作者:ssslinppp       1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC ...

  9. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

随机推荐

  1. 整理一波Go工程化目录结构~

    在Go语言领域遨游了几个月后,发现自己对Go语言相关的工程目录结构有些不了解,按照原来的习惯在Go工程中建立的目录结构显得比较奇怪,好的目录结构绝对是可以加强工程效率的,所以接下来会参考煎鱼.毛大等大 ...

  2. python读取txt文件绘制散点图

    方法和画折线图类似,差别在于画图函数不一样,用的是scatter() import matplotlib.pyplot as plt #以外部两个txt表分别作为x,y画图n=0m=0with ope ...

  3. Kubernetes将弃用docker?

    1.前言 近日,Kubernetes 官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,届时用户将收到 Docker 弃用警告,并需要改用其他容器运行时.并在1.23后不再支持dock ...

  4. Kubernetes之无头服务(headless)

    己经看到如何使用服务来提供稳定的ip地址,从而允许客户端连接到支持服务的每个pod (或其他端点).到服务的每个连接都被转发到一个随机选择的pod上.但是如果客户端需要链接到所有的pod呢?如果后端的 ...

  5. MySQL基本sql语句总结

    目录 约束 表操作 查看表结构与修改表名 修改字段名与字段数据类型 添加与删除字段 修改字段的排列位置 删除表的外键约束 增删改 插入数据 更新数据 删除数据 查询 单表查询 连接查询 子查询 视图 ...

  6. 2018-10-14普及模拟赛」Hash 键值 (hash)

    今天,带大家看一看一道思维题... Hash 键值 (hash) 题目描述 Marser沉迷hash无法自拔,然而他发现自己记不住hash键值了-- Marser使用的hash函数是一个单纯的取模运算 ...

  7. css图片显示文字(上浮)

    <html> <head lang="en"> <meta charset="UTF-8"> <title>&l ...

  8. 资源:Git快速下载路径

    Git快速下载地址: 地址:https://npm.taobao.org/mirrors/git-for-windows/

  9. ubuntu16.04上编译android的可执行文件并调用本地so库

    前言: 找了蛮多资料的,发现目前实现的编译方式大致就两种,一种是直接使用android源码中的编译工具链,另一种就是使用独立的交叉编译工具链,第二种我还在实现中,配置步骤挺多的 ,第一种实现方式挺方便 ...

  10. 《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》

    https://zhuanlan.zhihu.com/p/73723782 请复制粘贴到markdown 查看器查看! Do Neural Dialog Systems Use the Convers ...