spring03
Posted 无人i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring03相关的知识,希望对你有一定的参考价值。
title: spring03
date: 2020-03-09 19:06:11
tags:自动装配(autowired)
本部分是自动装配的内容。
1、概述
摘抄自秦老师
- 自动装配是使用spring满足bean依赖的一种方法
- spring会在应用上下文中为某个bean寻找其依赖的bean。
Spring中bean有三种装配机制,分别是:
- 在xml中显式配置;
- 在java中显式配置;
- 隐式的bean发现机制和自动装配。
这里我们主要讲第三种:自动化的装配bean。
Spring的自动装配需要从两个角度来实现,或者说是两个操作:
- 组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean;
- 自动装配(autowiring):spring自动满足bean之间的依赖,也就是我们说的IoC/DI;
2、环境
People
package com.nevesettle.pojo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; public class People { private String name; @Autowired @Qualifier("cat321") private Cat cat; @Autowired private Dog dog; public String getName() { return name; } public void setName(String name) { this.name = name; } public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } }
Cat
package com.nevesettle.pojo; public class Cat { public void shout(){ System.out.println("miao.."); } }
Dog
package com.nevesettle.pojo; public class Dog { public void shout(){ System.out.println("wang.."); } }
2、配置
只需要在xml中注册相应的bean,然后开启自动装配即可。
<?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">
<!--此处是开启自动装配的配置-->
<context:annotation-config/>
<bean id="cat321" class="com.nevesettle.pojo.Cat"/>
<bean id="cat323211" class="com.nevesettle.pojo.Cat"/>
<bean id="dog" class="com.nevesettle.pojo.Dog"/>
<bean id="people" class="com.nevesettle.pojo.People"/>
</beans>
3、笔记
@Autowired
- 自动装配
- 首先校验的是bean的类型, 如果类型存在则匹配,如果存在多个,则校验名称
- 当名称多个时,可以配合 @Qualifier("xxx")来使用
@Resource
- java自带的自动装配
- 先校验的是名称,其次是校验类型, 都不存在时报错,没有@Autowired常用
以上是关于spring03的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段
Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]
解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段