毛片a做片在线观看网站/在线外链推广

毛片a做片在线观看网站,在线外链推广,如何建设网络营销渠道,企业网站seo方案目录 Spring容器说明:Ioc容器优势:DI介绍:从Spring获取对象:获取对象的方法:关于上下文的概念: Controller注解(控制层:接收参数并响应):Service注解&#xf…

目录

  • Spring容器说明:
  • Ioc容器优势:
  • DI介绍:
  • 从Spring获取对象:
    • 获取对象的方法:
    • 关于上下文的概念:
  • @Controller注解(控制层:接收参数并响应):
  • @Service注解(业务逻辑层:处理业务数据):
  • @Repository注解(数据层:调用数据库用来获取数据):
  • @Configuration注解(配置层):
  • @Component注解在(组件层):
  • @Bean注解(方法注解):
  • 上面五大注解和方法注解的区别:
    • bean-->对象的命名规则:
  • Spring扫描路径:
  • 什么是DI:
    • DI的常用方法:
      • 1.属性注入:
      • 2.构造方法注入:
      • 3.set方法注入:
    • @Autowired存在的问题:
      • 解决措施:
        • 1.加上@Qualifier注解进一步通过名称来找bean:
        • 2.加上@Primary注解:
        • 3.加上@Resource注解:
  • 面试题:@Resource和@Autowired的区别:
    • @Autowired的装配顺序:

Spring容器说明:

Spring 就是⼀种IoC容器,Spring 容器 管理的主要是对象, 这些对象, 我们称之为"Bean". 我们把这些对象交由Spring管理, 由
Spring来负责对象的创建和销毁. 我们程序只需要告诉Spring, 哪些需要存, 以及如何从Spring中取出对象


把对象交给Spring管理,需要添加一些注解这里共有两类注解可以使用:
1.类注解:@Controller,@Service,@Repository,@Component,@Configuration


2.方法注解:@Bean


我们接下来就主要围绕注解的使用来讲解

Ioc容器优势:

1.控制权发生反转:不在需要使用方,创建对象并控制依赖,不需要自己创建对象和初始化,这就是控制反转


2.集中资源管理:
IOC容器会帮我们管理一些资源(对象)时, 只需要从IoC容器中去取
就可以了


3.降低资源的耦合度:我们在创建实例的时候不需要了解其中的细节, 降低了使用资源双方的依赖程度

DI介绍:

DI就是注入依赖,容器在运行时动态的为程序注入所需的依赖
依赖就是程序运行时需要的一些成员属性

从Spring获取对象:

因为对象被交给了Spring管理,所以我们要先获取Spring的上下文->ApplicationContext,再来根据方法获取对象

获取对象的方法:

这里我们主要根据名称获取,这个名称是唯一的,根据类型获取,这个类型就是某个类,根据名称+类型获取

// 1. 根据bean名称获取beanObject getBean(String var1) throws BeansException;// 2. 根据bean名称和类型获取bean<T> T getBean(String var1, Class<T> var2) throws BeansException;// 3. 按bean名称和构造函数参数动态创建bean,只适⽤于具有原型(prototype)作⽤域的beanObject getBean(String var1, Object... var2) throws BeansException;// 4. 根据类型获取bean<T> T getBean(Class<T> var1) throws BeansException;// 5. 按bean类型和构造函数参数动态创建bean, 只适⽤于具有原型(prototype)作⽤域的
bean<T> T getBean(Class<T> var1, Object... var2) throws BeansException;

关于上下文的概念:

比如线程上下文:一个栈结构,用于存储上层线程的上下文信息,以便继续执行。
包含当前线程的位置、设置、本地变量等信息。类似于一个环境和这里的Spring容器的上下文, 就是指当前的运行环境, 也可以看作是⼀个容器, 容器里存了很多内容, 这些内容是当前
运行的环境
**

@Controller注解(控制层:接收参数并响应):

使用@Controller 存储对象(bean):

import org.springframework.stereotype.Controller;@Controller
public class HelloController {public void print(){System.out.println("do Controller");}
}

用名称获取对象:就是把对象交给Spring容器管理

public static void main(String[] args) {//获取Spring上下文ApplicationContext context = SpringApplication.run(SpringIocDemoApplication.class, args);HelloController bean1 = (HelloController) context.getBean("helloController");bean1.print();

这里是引用

用类型获取对象:

 HelloController bean2 = context.getBean(HelloController.class);bean2.print();

这里是引用

使用类型和名称获取对象:

HelloController bean3 = context.getBean("helloController",HelloController.class);bean3.print();

这里是引用

@Service注解(业务逻辑层:处理业务数据):

存储对象代码如下:

import org.springframework.stereotype.Service;@Service
public class UserService {public void print(){System.out.println("do Service");}
}

使用类型获取对象:

 UserService bean7 = context.getBean(UserService.class);bean7.print();

@Repository注解(数据层:调用数据库用来获取数据):

存储对象代码如下:

import org.springframework.stereotype.Repository;@Repository
public class UserRepository {public void print(){System.out.println("do Repository");}
}

使用类型获取对象:

UserRepository bean6 = context.getBean(UserRepository.class);bean6.print();

@Configuration注解(配置层):

存储对象代码如下:

import org.springframework.context.annotation.Configuration;@Configuration("reNameBean")
public class UserConfig {public void print(){System.out.println("do config");}
}

使用类型获取对象:

UserConfig bean4 = context.getBean(UserConfig.class);bean4.print();

@Component注解在(组件层):

存储对象代码如下:

import org.springframework.stereotype.Component;@Component
public class UserComponent {public void print(){System.out.println("do Component");}
}

使用类型获取对象:

UserComponent bean8 = context.getBean(UserComponent.class);bean8.print();

@Bean注解(方法注解):

注意:方法注解使用时候注意要搭配以上的五大类注解使用:


Bean这个注解使用的场景:一个类需要多个对象:(上面的五大注解,只可以有一个对象)


以上五大注解和这个类注解都可以修改,对象的名字,就是让Spring按照我们的名字管理
在这里插入图片描述

查看对象:按照修改的对象

Student bean9 = (Student) context.getBean("ss1");System.out.println(bean9);Student bean10 = (Student) context.getBean("s2");System.out.println(bean10);

上面五大注解和方法注解的区别:

除了控制层必须使用注解(@Controller)之外,其他四个注解都可以替换使用,但是一般规范来说都在各自的层级使用


控制层使用其他注解有时候可以使用成功但是不稳定不规范


注解细节:
在这里插入图片描述

bean–>对象的命名规则:

从Spring容器获取对象时,通过名称获取就需要命名:


五大类注解:
以小驼峰命名,如果类名前两个字母为大写那么就是这个类名本身
在这里插入图片描述


bean注解:
方法注解要搭配类注解使用,命名默认为方法名
在这里插入图片描述在这里插入图片描述

Spring扫描路径:

Spring扫描路径是启动类所在路径,的子路径及子孙路径一直往后扫描
在这里插入图片描述


修改后演示:
在这里插入图片描述
发现其路径,刚开始的”HelloController“都启动不了:
在这里插入图片描述


也可以通过注解手动修改启动类路径:@ComponentScan
在这里插入图片描述

什么是DI:

DI就是依赖注入,它是一个过程,就是把Spring管理的依赖就是对象,拿出来再注入到指定的属性中

DI的常用方法:

1.属性注入:

通过注解@Autowired来实现:
在这里插入图片描述


需要注入的属性1


需要注入的属性2


结果:
在这里插入图片描述

2.构造方法注入:

构造方法注入需要注意:
当有一个构造方法时,没得选可以注入成功,但是有多个构造方法时注入由于反射机制去获取无参数的构造方法


有多个构造方法时,由于反射机制,会去选择无参数的构造方法导致对象没有注入
在这里插入图片描述


这个时候就需要加上@Autowired注解,选中使用的构造方法:
在这里插入图片描述

3.set方法注入:

在set方法加上@Autowired注解就行:
在这里插入图片描述在这里插入图片描述

@Autowired存在的问题:

@Autowired注解通过类型来找到对象,如果有多个对象,就会报错:因为@Autowired注解首先按照类型来找对象的,找到多个对象不知道使用哪个
在这里插入图片描述

解决措施:

1.加上@Qualifier注解进一步通过名称来找bean:

@Qualifier注解不能单独使用,必须配合@Autowired使用


在这里插入图片描述在这里插入图片描述

2.加上@Primary注解:

@Primary,没有参数,所以使用在多个对象那一级来指定
在这里插入图片描述


指定:
在这里插入图片描述
在这里插入图片描述

3.加上@Resource注解:

@Resource注解:直接通过name属性来指定要注入的bean名称:


在这里插入图片描述在这里插入图片描述在这里插入图片描述

面试题:@Resource和@Autowired的区别:

面试官喜欢听到的回答:按照类型来
1.@Autowird注解是Spring提高的注解,而@Resource注解是jdk提供的
2.@Resource按照名称注入,@Autowired按照类型注入,@Resource支持更多参数设置,按照name属性来找bean


拓展:@Resource不完全按照名称查找,也需要在类型的基础上按照名称查找

@Autowired的装配顺序:

首先按照类型找bean,找不到抛异常,找到一个装配;如果找到多个对象时按照@Qualifier查找,我们找到@Qualifier是按照名称来找bean的,所以@Autowired准确来说是按照“类型+名称”来注入对象的
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(四)趣学设计模式 之 原型模式!

目录 一、 啥是原型模式&#xff1f;二、 为什么要用原型模式&#xff1f;三、 原型模式怎么实现&#xff1f;四、 原型模式的应用场景五、 原型模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xf…

完美解决:.vmx 配置文件是由 VMware 产品创建,但该产品与此版 VMware Workstation 不兼容

参考文章&#xff1a;该产品与此版 VMware Workstation 不兼容&#xff0c;因此无法使用 问题描述 当尝试使用 VMware Workstation 打开别人的虚拟机时&#xff0c;可能会遇到以下报错&#xff1a; 此问题常见于以下场景&#xff1a; 从其他 VMware 版本&#xff08;如 ESX…

从零开始的网站搭建(以照片/文本/视频信息通信网站为例)

本文面向已经有一些编程基础&#xff08;会至少一门编程语言&#xff0c;比如python&#xff09;&#xff0c;但是没有搭建过web应用的人群&#xff0c;会写得尽量细致。重点介绍流程和部署云端的步骤&#xff0c;具体javascript代码怎么写之类的&#xff0c;这里不会涉及。 搭…

【Java项目】基于SpringBoot的【高校校园点餐系统】

【Java项目】基于SpringBoot的【高校校园点餐系统】 技术简介&#xff1a;采用Java技术、MySQL数据库、B/S结构实现。 系统简介&#xff1a;高校校园点餐系统是一个面向高校师生的在线点餐平台&#xff0c;主要分为前台和后台两大模块。前台功能模块包括&#xff08;1&#xff…

Django check_password原理

check_password 是 Django 提供的一个用于密码校验的函数&#xff0c;它的工作原理是基于密码哈希算法的特性。 Django 的 make_password 函数在生成密码哈希时&#xff0c;会使用一个随机的 salt&#xff08;盐值&#xff09;。这个 salt 会与密码一起进行哈希运算&#xff0…

Vulnhun靶机-kioptix level 4-sql注入万能密码拿到权限ssh连接利用mysql-udf漏洞提权

目录 一、环境搭建信息收集扫描ip扫描开放端口扫描版本服务信息指纹探测目录扫描 二、Web渗透sql注入 三、提权UDF提权修改权限 一、环境搭建 然后选择靶机所在文件夹 信息收集 本靶机ip和攻击机ip 攻击机&#xff1a;192.168.108.130 靶机&#xff1a;192.168.108.141 扫描…

PHP 会话(Session)实现用户登陆功能

Cookie是一种在客户端和服务器之间传递数据的机制。它是由服务器发送给客户端的小型文本文件&#xff0c;保存在客户端的浏览器中。每当浏览器向同一服务器发送请求时&#xff0c;它会自动将相关的Cookie信息包含在请求中&#xff0c;以便服务器可以使用这些信息来提供个性化的…

推荐几款SpringBoot项目手脚架

作为程序员、一般需要搭建项目手脚架时、都会去Gitee或Github上去找、但是由于Github在国内并不稳定、所以就只能去Gitee去上查找。 不同语言检索方式不一样、但是也类似。 Gitee WEB应用开发 / 后台管理框架 芋道源码 ELADMIN 后台管理系统 一个基于 Spring Boot 2.7.1…

医院安全(不良)事件上报系统源码,基于Laravel8开发,依托其优雅的语法与强大的扩展能力

医院安全&#xff08;不良&#xff09;事件上报系统源码 系统定义&#xff1a; 规范医院安全&#xff08;不良&#xff09;事件的主动报告&#xff0c;增强风险防范意识&#xff0c;及时发现医院不良事件和安全隐患&#xff0c;将获取的医院安全信息进行分析反馈&#xff0c;…

H3C交换机路由器防火墙FTP/TFTP服务器搭建。

软件介绍。 3CDaemon 2.0 - Download 3CDaemon 是一款集成了多种网络服务功能的工具软件&#xff0c;主要用于网络管理和文件传输&#xff0c;支持TFTP、FTP、Syslog等多种协议&#xff0c;广泛应用于网络设备的配置和管理。 1. 主要功能 TFTP服务器&#xff1a;支持TFTP协议…

【网络安全 | 漏洞挖掘】账户接管+PII+原漏洞绕过

文章目录 前言正文前言 本文涉及的所有漏洞测试共耗时约三周,成果如下: 访问管理面板,成功接管目标列出的3000多家公司。 获取所有员工的真实指纹、机密文件及个人身份信息(PII)。 绕过KYC认证,成功接管电话号码。 绕过此前发现的漏洞。 正文 在测试目标时,我发现了一…

深度学习学习笔记(34周)

目录 摘要 Abstracts 简介 Hourglass Module&#xff08;Hourglass 模块&#xff09; 网络结构 Intermediate Supervision&#xff08;中间监督&#xff09; 训练过程细节 评测结果 摘要 本周阅读了《Stacked Hourglass Networks for Human Pose Estimation》&#xf…

JVM类文件结构深度解析:跨平台基石与字节码探秘

目录 一、类文件&#xff1a;Java生态的通用语言 1.1 字节码的桥梁作用 1.2 类文件核心优势 二、类文件二进制结构剖析 2.1 整体结构布局 2.2 魔数与版本控制 2.3 常量池&#xff1a;类文件的资源仓库 2.4 访问标志位解析 三、核心数据结构详解 3.1 方法表结构 3.2 …

wps中zotero插件消失,解决每次都需要重新开问题

参考 查看zotero目录 D:\zotero\integration\word-for-windows 加载项点击 dotm即可 长期解决 把dom 复制到 C:\Users\89735\AppData\Roaming\kingsoft\office6\templates\wps\zh_CN还是每次都需要重新开的话 重新加载一下

List 接口中的 sort 和 forEach 方法

List 接口中的 sort 和 forEach 方法是 Java 8 引入的两个非常实用的函数&#xff0c;分别用于 排序 和 遍历 列表中的元素。以下是它们的详细介绍和用法&#xff1a; sort 函数 功能 对列表中的元素进行排序。 默认使用自然顺序&#xff08;如数字从小到大&#xff0c;字符…

GitCode 助力至善云学:构建智慧教育平台

项目仓库&#xff1a; 前端&#xff1a;https://gitcode.com/Fer_Amiya/vue-ZhiShanYunXue-Client 后端&#xff1a;https://gitcode.com/Fer_Amiya/go-ZhiShanYunXue-Server 突破传统教学困境&#xff0c;探索教育新解法 传统教学的习题讲评环节&#xff0c;教师面临着难以…

nnUNet V2修改网络——加入MultiResBlock模块

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 MultiRes Block 是 MultiResUNet 中核心组件之一,旨在解决传统 U-Net 在处理多尺度医学图像时的局…

HarmonyOS 开发套件 介绍——下篇

HarmonyOS 开发套件 介绍——下篇 在HarmonyOS的生态中&#xff0c;开发套件作为支撑整个系统发展的基石&#xff0c;为开发者提供了丰富而强大的工具和服务。本文将深入继续介绍HarmonyOS SDK、ArkCompiler、DevEco Testing、AppGallery等核心组件&#xff0c;帮助开发者全面掌…

小怿学习日记(七) | Unreal引擎灯光架构

灯光的布局对于HMI场景中车模的展示效果有着举足轻重的地位。本篇内容将简单介绍ES3.1的相关知识&#xff0c;再深入了解Unreal引擎中车模的灯光以及灯光架构。 一、关于ES3.1 1.1 什么是ES3.1 ES3.1这个概念对于美术的同学可能比较陌生&#xff0c;ES3.1指的是OpenGL ES3.1&…

【洛谷排序算法】P1012拼数-详细讲解

这道题本质上是通过确定数字的拼接顺序来得到最大拼接数&#xff0c;虽然主要思路是利用字符串及其比较规则来实现&#xff0c;但也可以基于数组结合一些转换操作来解决&#xff0c;以下是大致思路和代码示例&#xff1a; 【算法思路】 首先将输入的数字存储在数组中。然后自…