idea中Spring项目创建以及实现一个小的IoC案例

Windows下用Python调用科大讯飞语音唤醒SDK的避坑指南(附完整代码) 本文详细介绍了在Windows平台使用Python调用科大讯飞语音唤醒SDK的全流程,包括环境配置、核心代码实现、典型问题解决方案及进阶开发技巧。通过完整的代码示例和避坑指南,帮助开发者快速集成语音唤醒功能,提升开发效率。 阅读详情

1、 创建Spring项目

     我们在idea中创建一个Spring项目,具体如下
      勾选Spring以及Web Application

选择项目路径以及项目名(自动下载所需jar包)

创建配置文件

2、 简单的IoC案例

我们在src目录下新建com.test1包,并创建一个IntroduceDemo类,实现一个简单的自我介绍功能,代码如下:

package com.test1;

public class IntrduceDemo {
    //姓名
    private String name;
    //年龄
    private  int  age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * 自我介绍
     */
    public void intrduce(){
        System.out.println("您好,我叫"+this.name+"今年"+this.age+"岁!");
    }

}

    这是类中有两个私有属性,分别是name和age,还有一个自我介绍的方法intrduce;

    接下来我们配置Bean.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   <!--我们可以将这个bean理解为我们的javaBean,其中两个property标签即表示给IntrduceDemo类中的name和age属性赋值!-->
    <bean id="IntrduceDemo" class="com.test1.IntrduceDemo">
       <property name="name" value="李佳奇"/>
       <property name="age" value="2"/>
    </bean>
</beans>
这里我们再新建一个测试类testMain
package com.test1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testMain {
    public static void main(String[] args) {
        //创建Spring上下文(加载bean.xml)
        ApplicationContext acx= new ClassPathXmlApplicationContext("bean.xml");
        //获取HelloWorld实例
        IntrduceDemo id=acx.getBean("IntrduceDemo",IntrduceDemo.class);
        //调用方法
        id.intrduce();
    }
}
运行后得到结果:

3、 Bean的其他属性

<bean id="IntrduceDemo" class="com.test1.IntrduceDemo"></bean>
上面的bean标签除了id和class两个属性外,还有其他属性,这里我们介绍scope、init_method和destroy-method

1)scope
bean id=" IntrduceDemo " class=" com.test1.IntrduceDemo " scope="singleton"></bean>
      当我么设置scope属性为“singleton”时,当我们每次通过Spring容器的getBean方法获取IntrduceDemo实例时,得到的都是相同的一个实例,我们这里将示例中的bean.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   <!--我们可以将这个bean理解为我们的javaBean,其中两个property标签即表示给IntrduceDemo类中的name和age属性赋值!-->
    <bean id="IntrduceDemo" class="com.test1.IntrduceDemo" scope="singleton">

    </bean>
</beans> 

接着在测试类testMain.java中做如下修改:

package com.test1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testMain {
    public static void main(String[] args) {
        //创建Spring上下文(加载bean.xml)
        ApplicationContext acx= new ClassPathXmlApplicationContext("bean.xml");
        //获取HelloWorld实例并赋值
        IntrduceDemo id=acx.getBean("IntrduceDemo",IntrduceDemo.class);
        id.setName("李佳奇");
        id.setAge(2);
        //再获取一个HelloWorld实例,不赋值
        IntrduceDemo idNew=acx.getBean("IntrduceDemo",IntrduceDemo.class);
        //调用方法
        id.intrduce();
        idNew.intrduce();
    }
}
结果如下:

我们并没有为第二个对象idNew赋值,但是它的属性却是有值的,这是因为我们在bean.xml中bean标签中的scope属性设置为singleton,即单例模式,所以在id为其属性赋值后,后面每次新实例化的对象都是相同的。

与singleton对应的是prototype,如果将scope属性设置为prototype,再运行程序,我们将得到如下结果:


2)init-method和destroy-method
    这两个属性分别定义bean初始化和销毁时自动调用的方法,比如我们在IntrduceDemo做如下修改:

package com.test1;

public class IntrduceDemo {
    //姓名
    private String name;
    //年龄
    private  int  age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * 自我介绍
     */
    public void intrduce(){
        System.out.println("您好,我叫"+this.name+"今年"+this.age+"岁!");
    }

    //bean初始化时调用的方法
public void init(){
    System.out.println("Bean初始化.....");
}
//bean销毁时调用的方法
public void destroy(){
    System.out.println("Bean销毁.....");
   }
}
这时我们在bean.xml配置bean的init-method和destroy-method属性:

<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   <!--我们可以将这个bean理解为我们的javaBean,其中两个property标签即表示给IntrduceDemo类中的name和age属性赋值!-->
    <bean id="IntrduceDemo" class="com.test1.IntrduceDemo" scope="singleton" init-method="init" destroy-method="destroy">

    </bean>
</beans>

这里需要注意,当我们将bean的scope属性设置为singleton或者默认时,当容器销毁时才会调用destroy-method的方法。

这是我们的测试类:

package com.test1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testMain {
    public static void main(String[] args) {
        //创建Spring上下文(加载bean.xml)
        ApplicationContext acx= new ClassPathXmlApplicationContext("bean.xml");
        //获取HelloWorld实例并赋值
        IntrduceDemo id=acx.getBean("IntrduceDemo",IntrduceDemo.class);
        id.setName("李佳奇");
        id.setAge(2);
        //调用方法
        id.intrduce();
        //销毁实例对象
        ((ClassPathXmlApplicationContext) acx).close();
    }
}
运行测试类结果如下:









从 AI 助手到 ADT 自动化桥梁:全面解析 Vibing Steampunk 的定位、能力边界与典型使用场合 Vibing Steampunk是一个面向SAP ABAP开发的AI自动化工具集,它通过ADT API将SAP开发能力系统化地暴露给AI助手和命令行工作流。该工具支持ECC、S/4HANA等所有启用ADT的系统,提供代码读取、修改、测试、调试等全流程自动化能力。核心功能包括AI调试、上下文压缩、ABAP语言服务、Lua脚本自动化等,并内置多重安全控制。其分层架构兼容标准ADT和WebSocket扩展,既适合AI驱动开发,也支持传统DevOps自动化,特别适用于老系统代码考古、知识接力和复杂问题诊断场景。 阅读详情

相关推荐

基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现

本文实现了基于STM32F107VC的金牛开发板的基于SPI模式的SD卡驱动和FatFS的移植,以及利用minini库对ini配置信息文件进行读取。

sqshining的专栏 2137

Spring入门实例(IOC) IDEA版

Spring介绍 spring框架是Java应用最广的框架,根本使命是简化Java的开发。 开发流程 一、创建spring项目 如图操作: 二、命名项目 三、创建项目所需文件夹 在src文件夹下创建文件夹:com.java.ioc 整体结构如图所示: 四、创建模型对象 1.创建UserDao接口 package com.java.ioc; public...

lijiachu的博客 424

STM32开发实战--解决STM32CubeMX生成代码时钟初始化卡死问题

本文详细分析了STM32CubeMX生成代码在时钟初始化阶段卡死的问题,提供了多种解决方案,包括简单修改和稳健的等待机制。通过深入探讨HAL库的时钟初始化陷阱及硬件层面的根本原因,帮助开发者快速定位并解决STM32开发中的常见问题。

weixin_26965807的博客 439

Spring IoC 简单案例

IoC(Inversion of Control)是一种设计模式,维基百科的说法是这样的:Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式地用 new 建立 B 的对象。采用依赖注入技术之后,A 的代码只需要定义一个 private 的B对象,不需要直接 new 来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。

GoldenaArcher的博客 784

VisDrone2019数据集实战:从下载到YOLO格式转换的完整指南

本文提供了一份完整的VisDrone2019数据集实战指南,详细介绍了从数据集下载、理解其独特的标注格式,到转换为YOLO模型可直接训练格式的全过程。通过清晰的代码示例和步骤讲解,帮助读者掌握处理复杂无人机视觉数据集的核心技能,为基于YOLO的目标检测模型训练做好准备。

weixin_29165725的博客 384

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6549

Spring-IOC使用实例详解

实例12:引用外部属性文件 举例应用场景:对于数据库连接池,只需要创建一个连接池即可,从中获取连接对象。因此可以用IOC容器进行配置组件。 >数据库连接池的配置文件(dbconfig.properties) jdbc.username=root jdbc.password=root jdbc.jdbcUrl=jdbc:mysql://localhost:3306/custome...

Step By Step 1132

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 793

springIOC入门案例

IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。

Eliot的博客 410

【原理图PCB专题】Cadence 17.4版本原理图及PCB 模块复用

在我们设计复杂板卡的时候,往往会遇到一部分电路被反复使用的情况。Cadence允许设计者一开始就将复用模块设计好,以后只要直接调用复用模块就可以直接用以设计更复杂的电路板了。这对于大规模集成设计无疑是非常好的选择,它不仅让设计者不必花费时间在相同模块反复设计上,更有利于电路的模块化设计。

一点硬件 2016

10、智慧变电站 - 加载vue大屏元素(整体效果)

这一篇文章非常简单,但是也非常出效果阅读前面几篇文章,都可以看到有顶部、左侧、右侧的面板,主要我不会录gif图片,大屏元素面板还有一些动态加载的效果。 vue的transition标签 Vue 提供了 transition 的封装组件,可以给任何元素和组件添加进入/离开过渡;在进入/离开的过渡中,会有 6 个 class 切换:v-enter 、v-enter-active 、v-enter-to 、v-leave 、v-leave-active 、v-leave-to。我们正好使用这个特性来达到面板进入

github_39988036的博客 1039

idea启动spring项目

1、点击 进入: 2、点maven,点击左上角+号: 配置spring项目: (1)在parameters的command file中输入: org.mortbay.jetty:maven-jetty-plugin:6.1.26:run (2) 在runner的vm option中输入 -Djetty.port=8000 即可。 3、关闭弹框,选择刚配置的项目,点击运行按...

w_t_y_y的博客 2万+

RK3588&RK3576实现 HW-ID DTB(动态加载不同的Kernel DTB)功能

RK平台的U-Boot⽀持检测硬件上的GPIO或者ADC状态动态加载不同的Kernel DTB,暂称为HW-ID DTB(Hardware id DTB)功能。

Wynter 849

Spring基础(一)--在IDEA中创建一个Spring

简单来说,Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。 下载地址:http://repo.spring.io/release/org/springframework/spring/ 例子1:在IDEA中创建第一个Spring项目 首先 2.选中spring 3.项目名字及路径 注:IntelliJ IDEA中的project相当于ecl...

weixin_38266599的博客 332

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

idea新建一个Spring项目(最基础)

首先,笼统介绍一下,什么是spring1、Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。根据功能的不同,可以将一个系统中的代码分为主业务逻辑与系统级业务逻辑两类。它们各自具有鲜明的特点:主业务代码间逻辑联系紧密,有具体的专业业务应用场景,复用性相对较低;系统级业务相对功能独立,没有具体的专业业务应用场景,主要是为主业务提供系统级服务,如用户、权限管理,日志记录、安全管理、事务管理等,复用性强。2、Spring 根据代码的功能特点,将降低耦合度的方式分为了两类:IOC 与AOP。...

m0_54850467的博客 5922

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java后端开发 —— 记录一个spring入门案例

最近学完JavaSE部分的重点之后荔枝来入手spring框架,说起spring其实大家耳熟能详的就想起IoC和AOP了,但在这篇文章荔枝主要还是梳理一下一个最简单的spring框架配置流程并把相应需要的环境和踩过的坑给大家分享一下哈哈哈,大家避避雷~

荔枝当大佬的博客 2254

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spring IOC 入门案例

Spring IOC 入门案例 编程工具IDEA,采用maven导入依赖。 主要目录结构 spring_ioc - src - main - - java - - - com.zhangxin9727.ioc - - - - UserService.java - - - - UserServiceImp.java - - resources - - - applicationContext.x...

ZX9727的博客 374

Java匹马行天下之J2EE框架开发——Spring—>用IDEA开发Spring程序(01)

一、心动不如行动 一、创建项目 *注:在IDEA中我创建的Maven项目,不了解Maven的朋友可以看我之前的博客“我们一起走进Maven——知己知彼”,了解Maven后可以看我之前的博客“Maven的安装与配置”,自行安装,行动起来吧。 二、加载依赖 在pom.xml文件中添加Spring依赖和日志相关依赖 <dependencies> ...

weixin_33965305的博客 370

Spring<一>

5.3.9

m0_72623639的博客 219

一:Spring5框架简述

Spring5学习笔记+测试代码

pccjave的博客 193

【尚硅谷】Spring框架视频教程(spring超详细源码级讲解)1

【尚硅谷】Spring框架视频教程(spring超详细源码级讲解)_哔哩哔哩_bilibili

m0_61214655的博客 675

Spring IOC 基本操作

Spring Ioc 的基本操作,Di注入!

m0_59078057的博客 376

Spring介绍

Spring介绍Spring框架概述Spring入门案例下载SpringSpring入门案例1、创建一个idea工程2、导入spring相关的jar包使用Spring的方式创建对象3、创建一个普通的类,写一个普通的方法4、创建 Spring 配置文件,在配置文件配置创建的对象5、进行测试代码编写     Spring框架概述 Spring 是轻量级的开源的 JavaEE 框架 Spring 可以解决企业应用开发的复杂性 Spring 有两个核心部分:IOC 和 AOP(1)IOC:控制反转,把创建对象过程

只是个人笔记,请见谅 151

Spring学习笔记(一)入门案例

# Spring学习笔记(一)入门案例 ## 一、Spring入门案例 ### 1、实例 1. 通过 Idea 创建 maven 项目 2. 配置 Spring 配置文件 ApplicationContext.xml 3. 编写接口及实现类 - IaccountDao /** * 账户的持久层接口 */ public in...

weixin_43564549的博客 202

Spring框架

Spring简要概念,简单实例

weixin_47125289的博客 116

Spring入门(一):创建Spring项目

创建Spring项目。

申城异乡人 1785
上一篇: Java Api之IO流输入与输出
下一篇: Spring的构造注入、setter注入以及自动装配
madi_Goly
博客等级 码龄16年 11粉丝 14原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值