Spring学习笔记-Bean
Bean作用域(Bean Scope)
- singleton【单例模式】【默认】:全局唯一
<!--显式设置单例模式-->
<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中的三种装配方式
- xml中显式的配置
- java中显式的配置
- 隐式的自动装配【重点】
测试
- 搭建环境
- 新的普通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配置更好,取决于使用者和使用情况】
使用注解步骤:
- 导入约束
<?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>
- 配置注解的支持【手动高亮】
<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的更多相关文章
- Spring 学习笔记 Bean的作用域
在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域.作用域将对Bean的生命周期和创建方式产生影响.在低版本的Spring中,仅有两个作用域 ...
- Spring 学习笔记---Bean的生命周期
生命周期图解 由于Bean的生命周期经历的阶段比较多,我们将通过一个图形化的方式进行描述.下图描述了BeanFactory中Bean生命周期的完整过程: Bean 的生命周期从Spring容器着手实例 ...
- Java Spring学习笔记----Bean的依赖注入(设值注入方式)1
Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值:另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值: 1.设值注入方 ...
- spring学习笔记(一) Spring概述
博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书. 强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...
- Spring学习笔记2——表单数据验证、文件上传
在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...
- 不错的Spring学习笔记(转)
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- 【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat
作者:ssslinppp 1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC ...
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...
随机推荐
- javascript之一切都是对象
在学习的过程中,我们常常能听到这样一句话:一切皆是对象.那么这句话该如何理解呢?首先,我们要明确对象的概念.要明白除了基本数据类型都是对象. typeof操作符是大家经常使用的,我们常用它来检测给定变 ...
- 佛祖保佑永无BUG 神兽护体 代码注释(各种版本)
佛祖保佑 永无BUG /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. ...
- 详细解释 使用FileReference类加载和保存本地文件
一般而言,用户不希望web浏览器中运行的应用程序访问电脑硬盘里的文件.然而,随着基于浏览器(browser-based)的富因特网应用程序的增多,一些应用程序迫切需要访问用户所选择的文件,或者将文件保 ...
- SpringBoot集成logback后访问日志端点
问题描述 使用SpringBootAdmin(sba)监控Springboot服务时,配置了logback日志框架,按天滚动生成日志,此时在sba的日志监控页面出现404,如下图所示: 解决方案 查看 ...
- 暑假自学java第十二天
1, 创建String 字符串 Java 中的字符串是一连串的字符,与其他计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理.将字符串作为内置的对象处理,允许Jav ...
- WebService:WebService+Springboot常用注解
首先推荐webservice文章不错的博主:https://www.iteye.com/blog/yufenfei-1685249 这位博主主要讲了WebService的CXF的jar包运用,很实用 ...
- Leetcode No.66 Plus One(c++实现)
1. 题目 1.1 英文题目 Given a non-empty array of decimal digits representing a non-negative integer, increm ...
- ESP32-使用ADC笔记
基于ESP-IDF4.1 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "freertos/FreeRT ...
- 「CF568C」 New Language
「CF568C」 New Language 一眼 \(\texttt{2-SAT}\) . 然后不会了. 又看了一会儿,然后发现只要我们确定每个位置大于字典序的两种最小的字母是啥,然后按位贪心,这个问 ...
- C语言:printf*("%x")
#include <stdio.h> int main(){ int a = 100; char str[20] = "hello world!"; char *zza ...