作用域、延迟加载、数据装配与包扫描的方式创建bean

news/2024/5/19 9:30:47

文章目录

      • 一、作用域
      • 二、延迟加载
      • 三、类型装配
      • 四、包扫描的方式创建bean

一、作用域

  • 容器内部默认使用的是单例模式
    • 两种模式
      • 单例模式
          <bean id ="SomeService" class="org.example.SomeService" scope="singleton" ></bean> # 备注# scope= "singleton" 单例模式,默认# scope= "prototype" 单例模式,默认
        
      • 多例模式
        <bean id ="SomeService" class="org.example.SomeService" scope="prototype" ></bean> 
        

二、延迟加载

    <bean id ="SomeService" class="org.example.SomeService" scope="prototype" lazy-init="true"></bean># 备注# lazy-init="true" 什么时候用对象,什么时候创建对象

三、类型装配

  • 值类型装配
    • application.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id ="SomeService" class="org.example.SomeService" scope="prototype" lazy-init="true"><constructor-arg name="name" value="xiaoming"></constructor-arg></bean>
``` - 接口类 ``` package org.example;
    import java.util.List;public interface ISomeService {void doSome(); }```
  • 实现类
      package org.example;import java.util.List;public class SomeService implements ISomeService{private String name;public SomeService (String name){this.name = name;}@Overridepublic void doSome() {System.out.println("SomeService ----name值:"+name);}}
  • main
      ApplicationContext context =  new ClassPathXmlApplicationContext("applicationContext.xml");ISomeService iSomeService =  context.getBean("SomeService",ISomeService.class); iSomeService.doSome();
    
  • 引用类型装配
    • application.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id ="SomeService" class="org.example.SomeService" scope="prototype" lazy-init="true"><property name="lists"><list><value>1</value><value>2</value><value>3</value><value>4</value></list></property> </bean></beans>
      
    • 接口类
        package org.example;import java.util.List;public interface ISomeService { List<String> getList();}
    • 实现类
      package org.example;import java.util.List;public class SomeService implements ISomeService{private List<String> lists; public void setLists(List<String> lists) {this.lists = lists;}@Overridepublic List<String> getList() {return lists;}} 
      
    • main
        package org.example;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {/*** main* @param args*/public static void main(String[] args) {ApplicationContext context =  new ClassPathXmlApplicationContext("applicationContext.xml");ISomeService iSomeService =  context.getBean("SomeService",ISomeService.class);System.out.println(iSomeService.getList()); }}
      

四、包扫描的方式创建bean

  • applicationContextScanning.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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.scanningPackage"/></beans>
  • 接口类
         package com.scanningPackage;public interface ISomeService {void doSome();}
  • 实现类
         package com.scanningPackage;import org.springframework.stereotype.Service;@Servicepublic class SomeService implements ISomeService{@Overridepublic void doSome() {System.out.println("SomeService--doSome");}}
    • 注解注入
      • @Repository
        • 主要标记在数据访问层对应的实现类
      • @Service
        • 主要标记在业务逻辑层对应的实现类
      • @Controller
        • 主要标记在控制层对应的实现类
      • @Component
        • 不清楚该层数据哪一类
      • @Autowired [spring 框架提供的]
        • 使用该注解完成依赖注入
      • @Resource [java 提供]
        • 使用该注解完成依赖注入
  • main
    package com.scanningPackage;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {private static ISomeService iSomeService;public static void main(String[] agrs) {ApplicationContext context =  new ClassPathXmlApplicationContext("applicationContextScanning.xml");iSomeService = context.getBean("someService",ISomeService.class);iSomeService.doSome();}}
    

http://www.mrgr.cn/p/30660042

相关文章

C++仿函数周边及包装器

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

Lucene从入门到精通

**************************************************************************************************************************************************************************** 1、概述 【1】入门&#xff1a;作用、有点与缺点 【2】应用&#xff1a;索引、搜索、fie…

功能测试_分类_用例_方法

总结 测试分类 按阶段分类 是否查看源代码分类 是否运行分类 是否自动化 其他分类 软件质量模型 开发模型-瀑布模型 测试过程模型 v w 测试用例八大要素 用例编号 用例标题 …

unity制作app(3)--gps定位

1.unity中定位Unity之GPS定位&#xff08;高德解析&#xff09;_unity gps定位-CSDN博客 代码需要稍微修改一下&#xff0c;先把脚本绑到一个button上试一试&#xff01; 2.先去高德地图认证&#xff08;app定位&#xff09; 创建应用和 Key-Web服务 API | 高德地图API (ama…

16.5k star,开源推荐,go语言写的堡垒机

16.5k star,开源推荐,go语言写的堡垒机 原创 大侠之运维 大侠之运维 2024-05-04 00:02 江西teleport是一款go语言写的堡垒机,目前已经开源,可以自己部署体验下,teleport适合主机、kubernetes、数据库、RDP以及web服务。传送门:https://github.com/gravitational/teleport…

c++图论基础(1)

目录 无向图 无向图度 无向图性质 有向图 有向图度 有向图性质 图的分类&#xff1a; 稀疏图&#xff1a; 稠密图&#xff1a; 零图&#xff1a; 有向完全图&#xff1a; 无向完全图&#xff1a; 度序列&#xff1a; 图是由顶点集合(简称点集)和顶点间的边(简称边…

STL 标准模板库

以下是一些常用的STL容器&#xff1a; vector&#xff1a;动态数组&#xff0c;提供快速的随机访问。list&#xff1a;双向链表&#xff0c;支持快速插入和删除操作。set&#xff1a;有序集合&#xff0c;存储唯一的元素。map&#xff1a;有序映射&#xff0c;存储键值对。sta…

R语言学习—1—将数据框中某一列数据改成行名

将数据框中某一列数据改成行名 代码 结果

智慧旅游驱动行业革新:智能技术引领服务全面升级,匠心打造高品质、个性化旅游新体验

一、引言 随着科技的飞速发展和信息化程度的不断提高&#xff0c;智慧旅游正逐渐成为旅游业发展的新趋势。智慧旅游&#xff0c;顾名思义&#xff0c;是以智能化技术为支撑&#xff0c;通过大数据、云计算、物联网、人工智能等先进技术的应用&#xff0c;实现旅游服务的全面升…

国芯科技产品系列

国芯科技产品系列 GX8003 高性能离线语音识别芯片 产品简介 GX8003是面向离线语音识别市场推出的高性能低成本SoC芯片。它集成了国芯第二代神经网络处理器 gxNPU V200,集成音频ADC、DAC,内置晶振和Flash。芯片支持高性能的语音唤醒,和自定义的离线语音指令识别。具有识别率高…

『跨端框架』Flutter环境搭建

『跨端框架』Flutter环境搭建 资源网站简介跨平台高性能发展历程跨平台框架的比较成功案例 环境搭建&#xff08;windows&#xff09;基础环境搭建Windows下的安卓环境搭建Mac下的安卓环境配置资源镜像JDKAndroid StudioFlutter SDK问题一问题二问题三修改项目中的Flutter版本 …

踏上R语言之旅:解锁数据世界的神秘密码(五)

线性与非线性模型及R使用 文章目录 线性与非线性模型及R使用一、数据的分类与模型选择1.变量的取值类型 二、广义线性模型广义线性模型概述Logistic模型 总结 一、数据的分类与模型选择 1.变量的取值类型 因变量记为y&#xff0c;解释变量记为x1&#xff0c;x2,… 因变量y一般…

冰蓄冷系统基础知识

冰蓄冷是将水制成冰储存冷量&#xff0c;它是潜热蓄冷的一种方式。当压力保持不变时&#xff0c;物质在相变过程中保持恒定温度并吸收或释放热量&#xff0c;通常把这个温度称为相变温度(即溶解温度或凝固温度)&#xff0c;把吸收或释放的热量称相变潜热。在常压下&#xff0c;…

【数据结构】算法的效率(时间复杂度和空间复杂度)

目录 一.算法的效率 二.时间复杂度 1.概念 2.大O的渐进表示法 3.常见时间复杂度计算举例 三.空间复杂度 四.常见复杂度对比 五. 复杂度的oj练习 1.消失的数字 2.轮转数字&#xff1a; 一.算法的效率 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空…

Kafka客户端工具:Offset Explorer 使用指南

Kafka作为一个分布式流处理平台&#xff0c;在大数据处理和实时数据流应用中扮演着至关重要的角色。管理Kafka的topics及其offsets对于维护系统稳定性和数据一致性至关重要。Offset Explorer是一个强大的桌面应用程序&#xff0c;它使得管理和监控Kafka集群变得简单直观。本文将…

Servlet和Tomcat运作过程

记录一下前后端请求交互过程&#xff08;不涉及Spring框架&#xff09;&#xff1a; 编写一个UserServlet 在web.xml文件中编写映射路径 编写前端

vue快速入门(五十)重定向

注释很详细&#xff0c;直接上代码 上一篇 本篇建立在之前篇目前提下针对重定向进行演示 新增内容 路由重定向写法 源码 src/router/index.js //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import myMusic from "/v…

Apache中如何配置 ws 接口

Apache中如何配置 wss 接口 在Apache中配置WebSockets的支持&#xff0c;你需要使用mod_proxy_wstunnel模块&#xff0c;该模块是Apache的一个代理模块&#xff0c;它允许你代理WebSocket请求。 以下是配置步骤的简要说明和示例&#xff1a; 确保你的Apache服务器安装了mod_…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt+hadoop + redis 医院就诊系统 设计与实现

一.项目介绍 前端&#xff1a;患者注册 、登录、查看首页、医生排班、药品信息、预约挂号、就诊记录、电子病历、处方开药、我的收藏 后端分为&#xff1a; 医生登录&#xff1a;查看当前排班信息、查看患者的挂号情况、设置患者就诊记录、电子病历、给患者开药和个人信息维护 …

在AndroidStudio创建Flutter项目并运行到模拟器

1.Flutter简介 Flutter是Google开源的构建用户界面&#xff08;UI&#xff09;工具包&#xff0c;帮助开发者通过一套代码库高效构建多平台精美应用&#xff0c;支持移动、Web、桌面和嵌入式平台。Flutter 开源、免费&#xff0c;拥有宽松的开源协议&#xff0c;适合商…