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

文章目录

      • 一、作用域
      • 二、延迟加载
      • 三、类型装配
      • 四、包扫描的方式创建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.mzph.cn/news/832181.shtml

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

相关文章

flink sql 优化

文章目录 一、参数方面二、资源方面三、总结 提示&#xff1a;实时flink sql 参考很多网上方法与自己实践方法汇总(版本:flink1.13) 一、参数方面 flink sql参数配置 //关闭详细算子链(默认为true),true后job性能会略微有提升。false则可以展示更详细的DAG图方便地位性能结点…

go mod

常用命令 初始化模块 go mod init 模块名下载 go.mod 文件中指明的所有依赖 go mod download github.com/gin-gonic/ginv1.9.(依赖路径)依赖对其&#xff08;使引用的都是所依赖的&#xff09; go mod tidy编辑go.mod go mod edit go mod edit -require"github.com/g…

jvm 马士兵 01 JVM简介,class文件结构

01.JVM是什么 JVM是一个跨平台的标准 JVM只识别class文件&#xff0c;符合JVM规范的class文件都可以被识别 u1 是一个字节 u2是两个字节

5款采用AMD Instinct MI300芯片的超酷AI和HPC服务器

我们收集了戴尔科技、联想、超微和技嘉的五款超酷人工智能和高性能计算服务器&#xff0c;这些服务器使用 AMD 的 Instinct MI300 芯片&#xff0c;该芯片于几个月前推出&#xff0c;旨在挑战 Nvidia 在人工智能计算领域的主导地位。 AMD 正在凭借其 Instinct MI300 加速器芯片…

新手必看!场外个股期权的权利金估算公式

场外个股期权的权利金估算公式 场外个股期权的权利金估算公式通常涉及多个因素&#xff0c;这些因素共同决定了权利金的具体数额。虽然具体的估算公式可能因不同的交易平台、交易规则和标的资产而有所差异&#xff0c;但一般来说&#xff0c;权利金的计算会考虑以下几个关键要…

毕业单纯的钻研嵌入式知识有前景吗?

毕业之后单纯地去钻研嵌入式知识到底有没有前景呢&#xff1f;不可否认的是&#xff0c;嵌入式领域有着较高的薪资待遇&#xff0c;并且还存在着巨大的上升空间。然而&#xff0c;要学习嵌入式开发并非易事&#xff0c;其中存在着诸多挑战。其中一个挑战就是需要深入理解计算机…

前端奇怪面试题总结

面试题总结 不修改下面的代码进行正常结构 这道题考的是迭代器和生成器的概念 let [a,b] {a:1,b:2}答案 对象缺少迭代器&#xff0c;需要手动加上 Object.prototype[Symbol.iterator] function* (){// return Object.values(this)[Symbol.iterator]()return yeild* Object.v…

SpringBootWeb创建

创建spring项目 创建SpringBoot工程定义请求处理类运行常见问题java: 无效的源发行版: XXjava: 无法访问org.springframework.web.bind.annotation.RequestMapping类文件具有错误的版本 61.0, 应为 52.0 创建SpringBoot工程 定义请求处理类 RestController public class HelloC…

毕业设计uniapp+vue有机农产品商城系统 销售统计图 微信小程序

本人在网上找了一下这方面的数据发现农村中的信心普及率很是低农民们都不是怎么会用手机顶多就是打打电话发发短信&#xff0c;平时不太会上网更不会想到通过网络手段去卖出自己的劳作成果—农产品&#xff0c;这无疑大大浪费了农民的劳动成果和国家资源也大大打击了人们的生产…

Centos7配置NFS

环境描述 服务器IP为192.168.200.132客户机IP为192.168.200.143 服务器配置 首先安装软件包 [rootlocalhost ~]# yum install nfs-utils rpcbind //我这里已经安装完毕了建立共享目录 [rootlocalhost ~]# mkdir -p /data/share更改文件夹权限 chmod 777 /data/share编辑配置…

vsftp虚拟用户和ssl加密配置 —— 筑梦之路

为什么要用虚拟用户&#xff1f; 1.增强安全性&#xff1a;使用虚拟用户&#xff0c;可以避免直接使用系统账户进行 FTP 访问,通过使用虚拟用户&#xff0c;可以限制 FTP 用户的访问范围和权限&#xff0c;减少潜在的安全风险。 2.隔离用户和文件&#xff1a;虚拟用户可以被隔…

docker如何关闭证书认证

目录 前言关闭Docker认证的步骤修改pom 前言 当docker认证证书过期了&#xff0c;项目又要马上上线怎么办&#xff1f;重新生成证书&#xff0c;时间来不及&#xff0c;这时最快的方法就是关闭证书认证。 关闭Docker认证的步骤 停止Docker服务 systemctl stop docker编辑Do…

Ts创建的详细过程及配置步骤(傻瓜式配置创建),最后效果展示

一:首先创建一个 空文件夹 二:使用编辑器打开,再创建一个src文件夹,然后按照以下步骤

VMware worksation 17 简易安装Centos8.2、Redhat8.2、Ubuntu16.04

系列文章目录 文章目录 系列文章目录前言一、VMware worksation 17 安装二、安装Centos8.2三、安装RHEL8.2四、安装Ubuntu16.04总结 前言 傻瓜式按照Linux系统&#xff0c;如果觉得简单&#xff0c;可以自定义设置&#xff0c;特别是配置一下磁盘空间大小&#xff0c;对以后排…

2023年上半年系统规划与管理师上午真题及答案解析

1.香农用概率来定量描述信息的公式如下&#xff0c;其中H(x)表示X的( )&#xff0c;Pi是( )出现第i种状态的( )。 A.信息熵 事件 概率 B.总熵 单位 概率 C.信息熵 单位 概率 D.总熵 单位 度量 2.信息传输模型中&#xff0c;( )负责信息的向外传播&#xff0c;( )负责…

数据结构--链表进阶面试题

在链表题目开始之前我们来复习一道数组元素的逆序问题&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 提示&#xff1a; 1 < nums.length < 10^5-2^31 < nums[i] < 2^31 - 10 < k < 10^5 思…

wordpress子比主题给文章内容加上密码查看

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤1.引入库2.读入数据第三步:文章内添加代码前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,…

Docker容器:Docker-Consul的容器服务更新与发现

目录 前言 一、什么是服务注册与发现 二、 Docker-Consul 概述 1、Consul 概念 2、Consul 提供的一些关键特性 3、Consul 的优缺点 4、传统模式与自动发现注册模式的区别 4.1 传统模式 4.2 自动发现注册模式 5、Consul 核心组件 5.1 Consul-Template组件 5.2 Consu…

一款 NodeJS 版本管理工具 NVM (Windows)

一、简介 Node Version Manager&#xff08;NVM&#xff09;是一种用于管理多个 NodeJS 版本的工具。在日常工作中&#xff0c;我们可能同时在进行多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;依赖与不同版本的NodeJS 运行环境。这种情况下&#xff0c;维护…

SAP PP学习笔记11 - PP中的MRP相关概念,参数,配置

上文讲了作业区的概念及配置。 SAP PP学习笔记08 - 作业区&#xff08;工作中心Work Center&#xff09;&#xff0c;作业区Customize-CSDN博客 SAP PP学习笔记09 - 作业区&#xff08;工作中心Work Center&#xff09;Customize2&#xff08;管理码&#xff0c;班次顺序&…