IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Spring】跟着狂神练习Spring(p1-13集笔记)系列之一 -> 正文阅读

[Java知识库]【Spring】跟着狂神练习Spring(p1-13集笔记)系列之一

目前讲到的是Spring中IOC部分,狂神讲课视频在B站
https://www.bilibili.com/video/BV1WE411d7Dv?p=13特别受欢迎。

一、准备pojo

package com.pojo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import javax.annotation.Resource;

public class People {

//    @Qualifier(value="dog1")
//    @Resource(name="dog1")
    @Autowired
    private Dog dog;
    @Autowired
//    @Qualifier(value = "cat1")
//    @Resource(name="cat1")
    private Cat cat;
    private String name;
    private String id;
    //省略掉set getxx toString方法
}
// Dog pojo
public class Dog {
    public Dog() {

    }
    public void shout(){
        System.out.println("wangwang~");
    }
}

//Cat pojo
public class Cat {
    public Cat() {

    }
    public void shout(){
        System.out.println("miaomiao~");
    }
}

二、mapping.xml

这里是bean的配置,喂给spring的ioc容器一个metadata文件
这部分学习的是自动注解,主要涉及到spring中的两个注解

@Autowire(required=true) 设置true可以指定该属性为空
@Qualifier(value="")

<?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
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>
    <!--
        当我的pojo中定义的是 Cat cat;
        而这里定义同一个类型两个cat1 cat2对象时候,就会出现不唯一的bean问题
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
            @Autowired
            @Qualifier(value="dog1")
        No qualifying bean of type 'com.pojo.Dog' available: expected single matching bean but found 2: dog1,dog2
        因此现在考虑用Qualifier注解 配合Autowired 指定一个对象进行装配

        import javax.annotation.Resource;
        或者用@Resource(name="cat1")这个注解指定对象

        @Autowired 与 @Resource 的区别
        相同点: 都是自动装配 放在属性上
        @Autowire通过byType实现
        @Resource更强大写,先通过name去找 然后type去找
    -->
    <bean id="cat111" class="com.pojo.Cat"/>
<!--    <bean id="cat2" class="com.pojo.Cat"/>-->
    <bean id="dog111" class="com.pojo.Dog"/>
<!--    <bean id="dog2" class="com.pojo.Dog"/>-->
    <bean id="people" class="com.pojo.People"/>
</beans>

三、测试文件

/**
 * 自动装配比较强大
 * 可以在pojo类属性或者方法上直接加上@Autowired
 * 如果mapping中有多个相同类型但不同名的 会出问题 所以加上@Qualifier(value=mapping中的id)
 *1. -@Autowired(required=true|false)  false表示可以为空
 *   -@Qualifier(value=) Qualifier注解是因为mapping中可能有多个同种类型的pojo,用value可以指定唯一的pojo
 *
 *2. @Resuorce注解先按name去找  找不到就按照type去找
 *
 *3. @Nullable
 *
 *4. @Resource
 */
public class Main {
    @Test
    public void test(){
        ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "annotation.xml");
        People people = ctx.getBean("people", People.class);
        people.getDog().shout();
        people.getCat().shout();
        System.out.println(people);
    }
}

四、总结

狂神这部分已经讲到注解的是使用, xml配置bean, spring中如何用ApplicationContext这个接口获取上下文,然后用ctx获取metadata中配置好的bean。很大程度减轻程序去创建对象,让创建对象的权利交给配置文件中,提高灵活性。
摘录几个官网中的片片,加深自己理解
Spring 设计哲学
spring哲学
IOC与DI
在这里插入图片描述

metadata配置的几种形式
1.xml
2.注解
3.java 配置
在这里插入图片描述
自动装配
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:40:35  更:2021-09-11 18:40:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:14:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码