DI依赖注入-P8,P9,P10,P11

news/2024/10/22 18:46:17/

1.构造器注入

之前写过了~~~~

2.Set方式注入【重点】

3.拓展方式注入


2.Set方式注入【重点】 

【环境搭建】

1.复杂类型

2.真实测试对象

四个文件


Student实体类的创建:

 主要是依据官方文档来建立。那个Address也是为了测试不同的类型,而创建的引入类。主体是这个Student!!!

package com.Li.pojo;import java.util.*;//搭建多种注入方式,所以需要多种参数类型
public class Student {private String name;private Address address;private String[] books;private List<String> hobbys;private Map<String,String> card;private Set<String> games;private Properties info;private String wife;public String getName() {return name;}public void setName(String name) {this.name = name;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public String[] getBooks() {return books;}public void setBooks(String[] books) {this.books = books;}public List<String> getHobbys() {return hobbys;}public void setHobbys(List<String> hobbys) {this.hobbys = hobbys;}public Map<String, String> getCard() {return card;}public void setCard(Map<String, String> card) {this.card = card;}public Set<String> getGames() {return games;}public void setGames(Set<String> games) {this.games = games;}public Properties getInfo() {return info;}public void setInfo(Properties info) {this.info = info;}public String getWife() {return wife;}public void setWife(String wife) {this.wife = wife;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", address=" + address +", books=" + Arrays.toString(books) +", hobbys=" + hobbys +", card=" + card +", games=" + games +", info=" + info +", wife='" + wife + '\'' +'}';}
}

Address实体类的创建:

package com.Li.pojo;public class Address {private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

beans.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--最基础的创建对象--><bean id="student" class="com.Li.pojo.Student"><property name="name" value="李"/></bean></beans>

MyTest

import com.Li.pojo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyTest {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");Student student = (Student) context.getBean("student");System.out.println(student.getName());}
}

这些配置都没什么好说的,之前都配置过,学过。
测试

 输出配置注入的名字


八种注入方式:

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--注册类--><bean id="address" class="com.Li.pojo.Address"/><!--最基础的创建对象,设置name的值为李--><bean id="student" class="com.Li.pojo.Student"><!--第一种,普通注入,value--><property name="name" value="李"/><!--第二种,bean注入,使用ref。--><property name="address" ref="address"/><!--第三种,数组注入--><property name="books"><array><value>红楼梦</value><value>水浒传</value><value>三国演义</value><value>西游记</value></array></property><!--第四种,List注入--><property name="hobbys"><list><value>听歌</value><value>敲代码</value><value>打球</value></list></property><!--第五种,Map注入(特殊)--><property name="card"><map><entry key="身份证" value="0000000"/><entry key="银行卡" value="1111111"/></map></property><!--第六种,Set注入--><property name="games"><set><value>LOL</value><value>COC</value><value>BOB</value></set></property><!--第七种,null注入--><property name="wife"><null></null></property><!--第八种,Properties注入(特殊)--><property name="info"><props><prop key="driver">20220000</prop><prop key="url">xxx</prop><prop key="password">1111</prop><prop key="username">root</prop></props></property></bean></beans>

测试一下。

发现address有问题,所以给Address类里面增加一个toString方法

测试修改之后:

 成功!(因为再bean里面没有设置adress的值,所以为null)


拓展方式注入(了解即可)

User实体类:

package com.Li.pojo;public class User {public String name;public int age;public User() {}public User(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

userBeans.xml:

导入xml约束:

       xmlns:p="http://www.springframework.org/schema/p"xmlns:c="http://www.springframework.org/schema/c"

测试p与c (p对应无参构造,c对应有参构造

 

 测试:

   @Testpublic void test2(){ApplicationContext context = new ClassPathXmlApplicationContext("userBeans.xml");User user = context.getBean("user",User.class);//和强转本质一样,只不过换了一种形式System.out.println(user);User user2 = context.getBean("user2",User.class);System.out.println(user2);}


Bean的作用域

 六种作用域:

 默认单例:singleton(每一次创建的都是一个相同的bean对象)


prototype:(原型模式,每一次都是不同的bean对象)

 

 测试之后不相等了。


http://www.ppmy.cn/news/707510.html

相关文章

p11 p12 p13 p14 p15

p11&#xff1a; 字符型&#xff1a; 作用&#xff08;字符型变量用于显示单个字符&#xff09; 语法&#xff1a;char ch a; 注意1&#xff1a;在显示字符型变量时&#xff0c;用单引号将字符括起来&#xff0c;不要用双引号 注意2&#xff1b;单引号内只能有一个字符&…

【机器学习】P11 神经网络

神经网络 生物神经元人工神经网络Reference 生物神经元 人类如何思考&#xff1f; 神经科学 [ 1 ] ^{[1]} [1] 研究表明&#xff0c;神经元 是人类思考的基本单元。神经元是大脑中最基本的信息处理单元&#xff0c;它们通过复杂的电信号和化学信号传递来进行信息处理和传递。…

P11机器学习--李宏毅笔记(Bactch normolization 让error surface 变好)

目录 一、怎么变成好的error face 二、Feature Normalization 三、在深度学习中再使用Feature Normalization 四、batch normolization 一、怎么变成好的error face 从左上图来看&#xff0c;在w1方向上loss斜率很小但是在w2方向上loss斜率很大&#xff0c;当你在这个实验里…

深入浅出scala之变量定义(P11-20)

文章目录 1. 变量定义2.数据类型3.数值类型4.浮点类型5.字符类型6.字符串类型7.其他数据类型8.类型转换 1. 变量定义 基本语法: 变量定义一定要初始化 var|val变量名[: 变量类型] .变量值使用var或者val定义一个变量。 使用var(variable)声明变量&#xff0c;可以被重新赋值…

P10-P11:transforms工具的学习(Pytorch小土堆学习笔记)

图片经过transforms工具的变换&#xff0c;得到我们想要的一个图像变换结果 解释&#xff1a;根据模具创造工具&#xff0c;使用具体工具根据说明进行输入和输出 解决两个问题&#xff1a; 1.transform应该如何使用 2.为什么需要tensor数据类型 首先第一个问题 第一ToTens…

谷粒商城基础篇---day01(P1-P11)

一、安装linux虚拟机&#xff0c;我这里用的是VMware&#xff0c;怎么安装就不介绍了 直接环境-虚拟机网络设置 打开小黑板输入ipconfig&#xff08;可用于显示当前的TCP/IP配置的设置值&#xff09; 找到虚拟机的网络地址 或者https://blog.csdn.net/qq_38570633/article/…

刘二大人 PyTorch深度学习实践 笔记 P11 卷积神经网络(高级篇)

刘二大人 PyTorch深度学习实践 笔记 P11 卷积神经网络&#xff08;高级篇&#xff09; 1、GoogleNetI 网络结构II 减少代码冗余思想(减少代码重复) 2、Inception ModuleI 基本概念III 代码实现II Stack Layer 3、residual netI 普通网络与残差网络的区别II Residual blockIII 代…

秒杀p11~p15

开始异常处理 完善登录功能 分布式session redis安装 要用到虚拟机了&#xff0c;但我电脑哦太拉垮了 用虚拟机就很烫 suoyiwojiuzaiwindows下面安装了 反正自hi是自己用用而已 redis的安装和运行_敲代码敲到头发茂密的博客-CSDN博客_运行redis 1.装xftp 用xftp吧redis安装…