当前位置: 首页 > news >正文

SpringDI自动装配BeanSpring注解配置和Java配置类

依赖注入

上篇博客已经提到了DI注入方式的构造器注入,下面采用set方式进行注入

基于set方法注入

public class User {private String name;private Address address;private String[] books;private List<String> hobbys;private Map<String,String> card;private Set<String> games;private String wife;private Properties info;
<bean id="address" class="com.yuqu.pojo.Address"><property name="addr" value="地址"/>
</bean>
<bean id="user" class="com.yuqu.pojo.User"><!--      1. 普通值注入  String类型  value --><property name="name" value="远丘"/><!--      2. Bean注入  ref  --><property name="address" ref="address"/><!--      3. 数组注入 ref  --><property name="books"><array><value>Java核心编程思想</value><value>Java入门到实战</value><value>Java进阶编程</value></array></property><!--     4. list集合注入   --><property name="hobbys"><list><value>篮球</value><value>音乐</value><value>吉他</value></list></property><!--     5. map集合注入   --><property name="card"><map><entry key="" value=""/><entry key="" value=""/></map></property><!--     6. Set集合注入 --><property name="games"><set><value>set1</value><value>set2</value></set></property><!--     7. null注入   --><property name="wife"><null/></property><!--     8. Properties   --><property name="info"><props><prop key="driver">mysql-....</prop><prop key="url">localhost://3306</prop><prop key="username">root</prop><prop key="password">123456</prop></props></property>
</bean>

最终可以成功执行,以上也是在正常开发中最经常使用的一些set注入语法格式。对构造器进行输出,可以发现采用Set注入方式时,程序最开始在映射bean的时候依然是走无参构造,创建对象之后使用各个属性的set方法为其赋值

public User() {System.out.println("无参构造");
}
// 输出
无参构造

Spring扩展配置注入

p-namespace

p-namespace允许使用bean元素属性直接为对象参数赋值,不需要额外的< properties >子元素标签

p-namespace就对应于set方法注入

Spring官网给出:Spring supports extensible configuration formats with namespaces, which are based on an XML Schema definition. The beans configuration format discussed in this chapter is defined in an XML Schema document. However, the p-namespace is not defined in an XSD file and exists only in the core of Spring

也就是说Spring支持基于XML配置文件中定义的具有命名空间的额外可扩展配置。就是需要用带有namespace的配置到xml头文件中。同时P-namespace在不定义的情况下,仅存在于Spring的核心中(就是不配不能用)

配置头文件p-namespace:xmlns:p="http://www.springframework.org/schema/p"

映射Bean时使用:

<bean id="person" class="com.yuqu.pojo.Person" p:name="人类" p:tel="13523025288"/>
<!-- 不使用p-namespace -->
<bean id="person" class="com.yuqu.pojo.Person"><property name="name" value="人类"/><property name="tel" value="15632808079"/>
</bean>

c-namespace

c:constructor所以c-namespace对应于构造器注入
c-namespace扩展配置头文件:xmlns:c="http://www.springframework.org/schema/c"

<bean id="person" class="com.yuqu.pojo.Person" c:name="Mountain_think" c:tel="13434544324124"/>

也可以使用c_0或者c_1,数字代表构造器参数列表中参数的索引

使用c-namespace一定要添加含参构造,spring会自动检测class所对应的类中是否有含参构造,然后根据构造器的参数给出可以配置的属性名

Bean Scopes

Bean的作用域,是指将编写好的实体类映射到applicationContext.xml文件中之后的作用范围

查询官方文档可以了解到,在映射bean的过程中不仅可以定义各种依赖项和配置值,还可以自行控制每个Bean的作用区域,不用在Java当中设置。并且Spring支持六大作用域,但其中四个只有在WebMVC中才可以配置。除此之外还可以自行定义作用域

在这里插入图片描述

singleton

单例:(默认)将单个bean定义范围限定为每个SpringIoC容器的单个对象实例。

ApplicationContext context = new ClassPathXmlApplicationContext("application-Context.xml");
Person person = context.getBean("person", Person.class);
Person person1 = context.getBean("person",Person.class);
System.out.println(person==person1);
// 最终输出 true

可以发现在不进行显式设置的情况下,所映射好的bean在springIOC容器中都是单一实例
也可以显式定义:scope="singleton"

prototype

原型: 将单个bean定义范围限定为任意数量的对象实例。
也就是你每次调用getBean方法从IOC容器中获取到的实例都是一个新对象

<bean id="person" class="com.yuqu.pojo.Person"c:_0="Mountain_think" c:_1="13434544324124"<!-- 除了单例之外的其他作用域都需要显式定义 -->scope="prototype" />
public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("application-Context.xml");Person person = context.getBean("person", Person.class);Person person1 = context.getBean("person",Person.class);System.out.println(person==person1);
}
// 最终打印: false

其他都是智能在Web开发中使用的Only valid in the context of a web-aware Spring ApplicationContext.
比如:
request请求作用域:只在一次请求中有效
Session会话作用域:只在一次会话中有效
application全局作用域:在整个servlet中始终有效

自动装配Bean

先前提到的依赖注入都是采用在xml文件中由我们显式的去装备,但是Spring还提供了自动装配的机制
Spring会自动的在上下文中寻找,并自动装配Bean

ByName方式

ByName使用定义

<bean id="mom" class="com.mount.pojo.Mother"/>
<bean id="dady" class="com.mount.pojo.Father"/>
<bean id="person" class="com.mount.pojo.Person" autowire="byName"><property name="name" value="远丘"/>
</bean>

ByName的自动装配的原理就是:根据Bean中的set方法后缀来对应xml配置文件中的id名,比如setAge那么就会寻找id为age的bean
如上述代码所示,我们不需要在PersonBean中再去配置Father和Mother属性,只需要将这两个实体类映射到Bean中,Spring会帮助我们完成装配事情

使用ByName需要保证Bean的id全局唯一,并且id名要与set方法后缀字段一致(也就是与所属类中字段属性名一致)

ByType方式

ByType使用的定义格式就是将autowire="byName"换为autowire="byType"即可

<bean  class="com.mount.pojo.Mother"/>
<bean  class="com.mount.pojo.Father"/>
<bean id="person" class="com.mount.pojo.Person" autowire="byType" ><property name="name" value="远丘"/>
</bean>

根据byType自动装配原理就是spring会在上下文中寻找对应的对象类型,也就是说此时即便不为其他的实体类配置id,Spring也可以找到。
但是需要保证每一个实体类的全局唯一性,否则编译报错

注解自动装配Bean

使用前的配置

头文件信息配置,使用注解需要配置context的约束

<?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 
<!-- 配置2 -->
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置3:开启注解的使用权限 --><context:annotation-config/></beans>

@Autowired

可以在实体类中的属性前添注解@Autowired,那么只要这个属性对应的实体类在applicationContext中注册完毕,spring在装配Bean时就会自动的将添加了@Autowired注解的属性映射到具体的Bean中

public class Person {private String name;@Autowiredprivate Father dady;@Autowiredprivate Mother mom;

@Nullable 某个字段标记了该注解则表明该字段可以为null,当然也可以设置@Autowired实现该功能,打开Autowired的源码:

public @interface Autowired {boolean required() default true;
}

可以发现Autowired有一个参数required,默认为true表示该属性不能为null,也可以修改为false表示该属性可以为null

@Autowired(required = false)

那么通常我们在实体类中所定义的属性名需要与xml配置文件中bean的id一致,但是即便不一致。仍然可以通过注解来解决这个问题

@Qualifier提供了value参数,如果出现了bean的id与实体类属性名不一致的问题,我们可以通过@Qualifier注解将bean中的id映射到指定的实体类字段上
@Qualifier和@Autowired经常配套使用

就像这样:

@Autowired
@Qualifier(value = "momom")
private Mother mom;
<bean id="momom"  class="com.mount.pojo.Mother"/>

当然我们也可以忽略id,只保留class属性也可以运行

<bean  class="com.mount.pojo.Mother"/>
<bean  class="com.mount.pojo.Father"/>

@Resource

@Resource注解是Java的原生注解,就功能来讲比Spring所内置的注解更加强大。它集合了Spring的@Autowired和@Qualifier两个注解的特性。

不仅可以利用指定名称映射到bean的id,也可以通过类型映射。

public class Person {private String name;@Resourceprivate Father dady;@Resource(name = "mommm")private Mother mom;

也可以配置@Resource要映射的实体类type

@Resource(type = Mother.class)

xml:

<bean id="mommm"  class="com.mount.pojo.Mother"/>
<bean  class="com.mount.pojo.Father"/>

两者都是用来自动装配bean使用的
@Autowired默认采用ByType方式实现,如果ByType找不到或者存在多个同类型bean就会根据属性名与Bean的id进行查找,当bean的id与属性名不一致时就可以添加注解@Qualifier进行映射字段名

而@Resource默认采用ByName方式,不指定name属性时,就会根据字段名去扫描bean中的id,找不到就会通过ByType方式扫描,再找不到就报错
此外我们可以直接再@Resource注解中配置name字段名属性和type类型名称

利用注解开发

我们不在需要将每个需要使用的类都利用xml配置注册到spring容器当中,只需要给特定层级的类添加对应注解即可。并且要开启spring注解的支持以及对包的扫描,扫描到了注解才能将该类成功注册为spring容器中的bean

<!--  扫描包 该包下的注解才会生效  -->
<context:component-scan base-package="com.mount.pojo"/>
<!--  注解支持  -->
<context:annotation-config/>

针对实体类POJO层,使用@Component注解将该类注册为bean
DAO层使用@Repository注解
Service层使用@service注解
Controller层使用@Controller注解
上述三个注解的作用一致,均为将其所修饰的类注册到Spring容器中,由spring同一管理bean

@Scope作用域:@Scope(scopeName = "singleton")
@Value:表示为当前所修饰的属性赋值。较简单的字段可以采取该方式,复杂一些的仍然要到xml文件中去配置

示例:

// pojo层
@Component
public class User {
// dao层
@Repository
public class UserDaoImpl implements UserDao{
// service层
@Service
public class UserService {
// controller层
@Controller
@Scope(scopeName = "singleton")
public class UserController {
// value使用
@Value("远丘")
private String name;
@Value("远丘")
public void setName(String name){this.name = name;}

但是即便如此,我们的spring注入配置还没有完全脱离配置文件

使用Java配置Spring

核心:Java配置类、不再需要applicationContext.xml配置文件
不再使用ClassPathXmlApplicationContext获取Spring的上下文来获取容器
更换为使用AnnotationConfigApplicationContext获取Spring容器

先来看配置类:

@Configuration  // 配置类  也会被spring容器托管
@ComponentScan("com.mountain.pojo")// 扫描包
public class MountConfig {// 注册一个bean 等同于xml中的一个bean标签// bean的id等同于方法名  bean的class属性等同于该方法的返回值@Beanpublic User getUser() {return new User();}@Beanpublic Bitch getBitch(){return new Bitch();}
}

@Configuration:表示该类为配置类,并且其本身也被@Component标注,也就是说该类同样会被Spring容器管理

@ComponentScan等同于<context:component-scan base-package="com.mountain"/>表示开启扫描,在该包下面所有的注解才能生效

@Bean等同于先前在xml文件中映射的某一个bean,该注解所修饰的方法名等于bean的id,返回值为bean的class属性

实体类:

@Component
public class User {@Value("be better")private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}

测试类:

public void testDemo(){ApplicationContext context = new AnnotationConfigApplicationContext(MountConfig.class);User user = context.getBean("getUser", User.class);System.out.println(user.getName());Bitch bitch = context.getBean("getBitch", Bitch.class);System.out.println(bitch.getAge());
}

如果使用了配置类去做,那么只能通过ApplicationContext上下文来获取容器,其参数为被标记了@Configuration的配置类,生成对象context可以用于调用在配置类中被标记为@Bean的方法获取对象

Spring注解速查

@Autowired:用在属性上,表示自动装配该属性
@Qualifier:与Autowired配套使用,用于映射bean的id名称到类的属性上
@Nullable:表示该值可以未null
@Resource:Java原生的自动装配注解 带有name、type属性
@Component【pojo层】:组件、放在类上,表示这个类注入到Spring容器中,由spring管理
@value:可以放在属性上和set方法上,表示为这个属性赋值
等价于<property name="XXX" value="XXX"/>
@Component的衍生注解:

  1. @Respository 【Dao层】
  2. @Services【service层】
  3. @Controller 【controller层】

@Scope:作用域
@Import:引入其他配置类
@Configuration:表明该类为配置类
@ComponentSan:扫描包,被扫描包下的注解可生效
@Bean:等同于bean标签的配置

相关文章:

SpringDI自动装配BeanSpring注解配置和Java配置类

依赖注入 上篇博客已经提到了DI注入方式的构造器注入&#xff0c;下面采用set方式进行注入 基于set方法注入 public class User {private String name;private Address address;private String[] books;private List<String> hobbys;private Map<String,String>…...

2月面经:真可惜...拿了小米的offer,字节却惨挂在三面

我是2月份参加字节跳动和华为的面试的&#xff0c;虽然我只拿下了小米的offer&#xff0c;但是我自己也满足了&#xff0c;想把经验分享出来&#xff0c;进而帮助更多跟我一样想进大厂的同行朋友们&#xff0c;希望大家可以拿到理想offer。 自我介绍 我是16年从南京工业大学毕…...

磐云PY-B8 网页注入

文章目录1.使用渗透机场景windows7中火狐浏览器访问服务器场景中的get.php&#xff0c;根据页面回显获取Flag并提交&#xff1b;2.使用渗透机场景windows7中火狐浏览器访问服务器场景中的post.php&#xff0c;根据页面回显获取Flag并提交&#xff1b;3.使用渗透机场景windows7中…...

多传感器融合定位十-基于滤波的融合方法Ⅰ其二

多传感器融合定位十-基于滤波的融合方法Ⅰ其二3. 滤波器基本原理3.1 状态估计模型3.2 贝叶斯滤波3.3 卡尔曼滤波(KF)推导3.4 扩展卡尔曼滤波(EKF)推导3.5 迭代扩展卡尔曼滤波(IEKF)推导4. 基于滤波器的融合4.1 状态方程4.2 观测方程4.3 构建滤波器4.4 Kalman 滤波实际使用流程4…...

Java集合面试题:HashMap源码分析

文章目录一、HashMap源码二、HashMap数据结构模型图三、HashMap中如何确定元素位置四、关于equals与hashCode函数的重写五、阅读源码基本属性参考文章&#xff1a;史上最详细的 JDK 1.8 HashMap 源码解析参考文章&#xff1a;Hash详解参考文章&#xff1a;hashCode源码分析参考…...

华为OD机试 - 数组合并(Python),真题含思路

数组合并 题目 现在有多组整数数组, 需要将他们合并成一个新的数组。 合并规则, 从每个数组里按顺序取出固定长度的内容合并到新的数组中, 取完的内容会删除掉, 如果该行不足固定长度或者已经为空, 则直接取出剩余部分的内容放到新的数组中, 继续下一行。 如样例 1, 获得长度…...

Vue2创建移动端项目

一、Vscode Vscode 下载安装以及常用的插件 1、Vscode 下载 下载地址&#xff1a;Vscode 中文语言插件 搜索 chinese 主题 Atom 主题 文件图标主题 搜索 icon 源代码管理插件GitLens 搜索 GitLens Live Server _本地服务器 搜索 Live Server Prettier - Code formatt…...

PorterDuffXfermode与圆角图片

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 圆角图片 在项目开发中&#xff0c;我们常用到这样的功能&#xff1a;显示圆角图片。 这个是咋做的呢&#xff1f;我们来瞅瞅其中一种实现方式 /*** param bitmap 原图* p…...

如何准备大学生电子设计竞赛

大学生电子设计竞赛难度中上&#xff0c;一般有好几个类型题目可以选择&#xff0c;参赛者可以根据自己团队的能力、优势去选择合适自己的题目&#xff0c;灵活自主空间较大。参赛的同学们可以在暑假好好学习相关内容&#xff0c;把往年的题目拿来练练手。这个比赛含金量还是有…...

【Java容器(jdk17)】ArrayList深入源码,就是这么简单

ArrayList深入源码一、ArrayList源码解析1. MIXIN 的混入2. 属性说明3. 构造方法4. 其他方法&#xff08;核心&#xff09;iterator 和 listIterator 方法add方法remove 方法sort方法其他二、ArrayList 为什么是线程不安全的&#xff1f;体现哪些方面呢&#xff1f;三、ArrayLi…...

【Java 面试合集】简述下Java的三个特性 以及项目中的应用

简述下Java的特征 以及项目中的应用 1. 概述 上述截图中就是Java的三大特性&#xff0c;以及特性的实现方案。接下来就每个点展开来说说 2. 封装 满足&#xff1a;隐藏实现细节&#xff0c;公开使用方法 的都可以理解为是封装 而实现封装的有利手段就是权限修饰符了。可以根据…...

git基本概念图示【学习】

基本概念工作区&#xff08;Working Directory&#xff09;就是你在电脑里能看到的目录&#xff0c;比如名字为 gafish.github.com 的文件夹就是一个工作区本地版本库&#xff08;Local Repository&#xff09;工作区有一个隐藏目录 .git&#xff0c;这个不算工作区&#xff0c…...

微前端qiankun架构 (基于vue2实现)使用教程

工具使用版本 node --> 16vue/cli --> 5 创建文件 创建文件夹qiankun-test。 使用vue脚手架创建主应用main和子应用dev 主应用 安装 qiankun: yarn add qiankun 或者 npm i qiankun -S 使用qiankun&#xff1a; 在 utils 内创建 微应用文件夹 microApp,在该文件夹…...

记录robosense RS-LIDAR-16使用过程3

一、wireshark抓包保存pcap文件并解析ubuntu18安装wireshark&#xff0c;参考下面csdn教程&#xff0c;官网教程我看的一脸蒙&#xff08;可能英语太差&#xff09;https://blog.csdn.net/weixin_46048542/article/details/121730448?spm1001.2101.3001.6650.2&utm_medium…...

【博学谷学习记录】大数据课程-学习第七周总结

Hadoop配置文件修改 Hadoop安装主要就是配置文件的修改&#xff0c;一般在主节点进行修改&#xff0c;完毕后scp下发给其他各个从节点机器 文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的&#xff0c;即使我们当前的系统中设置了JAVA_HOME&#xff0c;它也…...

154、【动态规划】leetcode ——494. 目标和:回溯法+动态规划(C++版本)

题目描述 原题链接&#xff1a;494. 目标和 解题思路 &#xff08;1&#xff09;回溯法 本题的特点是nums中每个元素只能使用一次&#xff0c;分别试探加上nums[index]和减去nums[index]&#xff0c;然后递归的遍历下一个元素index 1。 class Solution { public:int res …...

MySQL-窗口函数

窗口函数概念常用窗口函数聚合窗口函数专用窗口函数语法OVER子句window_specwindow_name (命名窗口)partition_clause 分区order_clause 排序frame_clause 范围 &#xff08;指定窗口大小&#xff09;使用限制练习准备概念 窗口函数对一组查询执行类似于聚合的操作。然而&#…...

【C++设计模式】学习笔记(1):面向对象设计原则

目录 简介面向对象设计原则(1)依赖倒置原则(DIP)(2)开放封闭原则(OCP)(3)单一职责原则(SRP)(4)Liskov替换原则(LSP)(5)接口隔离原则(ISP)(6)优先使用对象组合,而不是类继承(7)封装变化点(8)针对接口编程,而不是针对实现编程结语简介 Hello! 非常感谢您阅读海…...

[测开篇]设计测试用例的方法如何正确描述Bug

​ 文章目录为什么测试人员要写测试用例&#xff1f;怎样设计测试用例&#xff1f;&#xff08;总的方面&#xff09;1.基于需求设计测试用例&#xff08;总的方面&#xff09; 2.页面&#xff08;总的方面&#xff09; 3.非功能性测试&#xff08;具体方面&#xff09; 4.1 等…...

设计模式学习笔记--单例、建造者、适配器、装饰、外观、组合

以下内容根据以下网址及相关视频整理&#xff1a;Android设计模式之单例模式_谬谬清不给我取名字的博客-CSDN博客_android 单例模式 Android设计模式--单例模式的六种实现和单例模式讲解Volatile与Synchronized相关的并发_龙腾腾的博客-CSDN博客_android 单例 volatile java …...

English Learning - Day5 L1考前复习 2023.2.10 周五

English Learning - Day5 L1考前复习 2023.2.10 周五1 单选题&#xff1a;She has the face _________.2 单选题&#xff1a; The goals ________ he fought all his life no longer seemed important to him.3 单选题&#xff1a;Sales director is a position ______ communi…...

C. Prepend and Append

time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Timur initially had a binary string†† s&#xfffd; (possibly of length 00). He performed the following operation several (possibly zero)…...

javassm超市在线配送管理系统

为了解决用户便捷地在网上购物&#xff0c;本文设计和开发了一个超市管理系统。本系统是基于web架构设计&#xff0c;SSM框架 &#xff0c;使用Mysql数据库管理&#xff0c;综合采用JSP模式来完成系统的相关功能。主要实现了管理员与用户的注册与登陆&#xff0c;个人中心、用户…...

Scratch少儿编程案例-多模式贪吃蛇(无尽和计时)

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

谷歌蜘蛛池怎么搭建?Google蜘蛛池可以帮助谷歌排名吗?

本文主要分享关于谷歌蜘蛛池的搭建疑问&#xff0c;以及Google对谷歌排名的影响到底有多大。 本文由光算创作&#xff0c;有可能会被剽窃和修改&#xff0c;我们佛系对待这种行为吧。 谷歌蜘蛛池怎么搭建&#xff1f; 答案是&#xff1a;需要一个内链外链体系复杂的站群系统…...

Kubernetes集群-部署Java项目

Kubernetes集群-部署Java项目&#xff08;SSG&#xff09; k8s部署项目java流程图 第一步 打包制作镜像 打包 java源码&#xff1a; application.properties #在有pom.xml的路径下执行 mvn clean package制作镜像&#xff1a; 将刚才打包后的文件夹传到&#xff0c;装有dock…...

English Learning - Day54 作业打卡 2023.2.8 周三

English Learning - Day54 作业打卡 2023.2.8 周三引言1. 就算你不喜欢喝酒&#xff0c;也请尝一杯吧。2. 便纵有千种风情&#xff0c;更与何人说&#xff1f;——柳永《雨霖铃》 (来&#xff0c;挑战一下古诗词)3. 虽然忙&#xff0c;我也要参加会议。4. 无论发生什么&#xf…...

【Unity题】 1.矩阵旋转,欧拉旋转,四元数旋转各自的优缺点。2.StringBuilder和String的区别

1.矩阵旋转&#xff0c;欧拉旋转&#xff0c;四元数旋转各自的优缺点 矩阵旋转&#xff0c;欧拉旋转&#xff0c;四元数旋转是三种不同的旋转表示方法&#xff0c;下面是它们各自的优缺点&#xff1a; 矩阵旋转&#xff1a; 优点&#xff1a; 1.可以方便地实现复合旋转&…...

【C++面试问答】搞清楚深拷贝与浅拷贝的区别

问题 深拷贝和浅拷贝的区别是面试中的常见问题之一&#xff0c;对于不同的编程语言&#xff0c;这个问题的回答可能稍有差别&#xff0c;下面我们就来探索一下它们之间的异同吧。 先来看看在JavaScript对象的深拷贝与浅拷贝的区别&#xff1a; 浅拷贝&#xff1a;只是复制了…...

day10_面向对象基础

今日内容 零、 复习昨日 一、面向对象的概念 二、面向对象编程 三、内存图 零、 复习昨日 见晨考题 每日一数组题 写一个方法 用于合并两个int类型的数组 合并法则如下 {1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0} package com.qf.array;import java.util.Arrays;/*** --- 天…...

橙子建站验证码/新乡seo公司

关注回复[目录]学习113篇Excel教程全套Excel视频教程&#xff0c;扫码观看编按&#xff1a;哈喽&#xff0c;大家好&#xff01;今天是部落窝函数课堂的第7课&#xff0c;我们将一起来认识FIND函数&#xff01;对于FIND函数&#xff0c;相信大家或多或少都会有一点印象&#xf…...

家具网站建设需求/乐清网站建设

在多线程下使用Iterator来迭代对象时&#xff0c;总会包ConcurrentModificationException();异常&#xff0c;经过我对list和Iterator相关源码的分析&#xff0c;终于搞明白了这个问题&#xff1a;下面结合源代码来讨论这个问题&#xff1a;1、当我们调用一个List的iterator时&…...

汾湖做网站/前端培训哪个机构靠谱

开始的想法源于netcore中通过lambd查询数据库后可以直接转为实体&#xff0c;所以试验在java中如何实现具体试验思路&#xff1a;利用现有数据库&#xff0c;定义一个获取车辆的api,调用获取车辆及司机信息1、现有车辆和司机模型车辆表(大概列一下&#xff0c;实际比这多)&…...

宿州网站建设/2023新闻摘抄大全

导读在医学技术飞速发展的今天&#xff0c;不少人还是会提“癌”色变&#xff0c;视癌症为“绝症”的代名词。加拿大多伦多大学的研究人员开发了一款新型纳米机器人&#xff0c;它将带领我们从细胞的角度&#xff0c;更加直观地观测细胞在癌症不同时期的状态&#xff0c;为癌症…...

three.js做的酷炫网站/镇江网站建站

2月20日&#xff0c;记者从金山毒霸云安全中心获悉&#xff0c;“猫癣”(又名“犇牛”)的幕后集团已将黑手伸向IE7最新高危漏洞(ms09-002)&#xff0c;迅速替换了原先的 IE7 XML 漏洞&#xff0c;正以前所未有的力度大面积推广“猫癣”下载器&#xff0c;抢在用户打漏洞补丁前实…...

龙岩制作b2b网站/培训心得体会范文大全2000字

希望对大家有用 全局组件的第一种写法 html:<div id "app"> <show></show></div> js&#xff1a;第一步&#xff1a;实例化Vue对象 var app new Vue({ el:"#app" }) 第二步:定义组件 var myComponent Vue.…...