3、Spring之入门案例
3.1、创建module
3.1.1、右击project,创建新module

3.1.2、选择maven

3.1.3、设置module名称和路径


3.1.4、module初始状态

3.1.5、配置打包方式和依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.rain</groupId>
<artifactId>spring_helloword</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
3.2、示例
3.2.1、创建组件类

package org.rain.spring.component;
/**
* @author liaojy
* @date 2023/7/25 - 19:17
*/
public class HelloWord {
public void sayHello(){
System.out.println("Hello,Spring!");
}
}
3.2.2、创建Sprig配置文件

++++++++++++++++++++++++++++++++++++分割线++++++++++++++++++++++++++++++++++++

注意:因为会通过自定义代码指定Spring配置文件,所以Spring配置文件名可以是任意的;
但当整合ssm后,就不能通过通过自定义代码指定Spring配置文件,因此文件名有硬性要求。
<?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标签:配置交给Spring的IOC容器管理的对象
id属性:设置bean的唯一标识
class属性:设置bean所对应类型的全类名
-->
<bean id="helloWord" class="org.rain.spring.component.HelloWord"></bean>
</beans>
3.2.3、创建测试类

如图所示,获取到了IOC容器和容器中对应的bean组件,并成功调用了该bean组件的方法
package org.rain.spring.test;
import org.junit.Test;
import org.rain.spring.component.HelloWord;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author liaojy
* @date 2023/7/25 - 19:39
*/
public class HelloWordTest {
@Test
public void testHelloWord(){
//获取IOC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取IOC容器中的bean
HelloWord helloWord = (HelloWord)applicationContext.getBean("helloWord");
helloWord.sayHello();
}
}
3.3、获取bean的三种方式
3.3.1、根据id获取
由于 id 属性是 bean 的唯一标识,所以根据 bean 标签的 id 属性可以精确获取到一个组件对象;但也存在类型转换问题,具体见上一小节。
3.3.2、根据类型获取(最常用)

如图所示,根据类型获取bean,则不存在类型转换问题
@Test
public void testHelloWord(){
//获取IOC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取IOC容器中的bean
HelloWord helloWord = applicationContext.getBean(HelloWord.class);
helloWord.sayHello();
}
注意:如下图所示,当根据类型获取bean时,要求IOC容器中指定类型的bean有且只能有一个;否则会报错
org.springframework.beans.factory.NoUniqueBeanDefinitionException:
No qualifying bean of type 'org.rain.spring.component.HelloWord' available:
expected single matching bean but found 2: helloWord,helloWordtwo

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

3.3.3、根据id和类型获取

@Test
public void testHelloWord(){
//获取IOC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取IOC容器中的bean
HelloWord helloWord = applicationContext.getBean("helloWord",HelloWord.class);
helloWord.sayHello();
}
3.3.4、重要扩展
如果组件类实现了接口,则根据接口类型可以获取 bean,前提是IOC容器中实现该接口的组件类型的bean有且只能有一个

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

@Test
public void testHelloWord(){
//获取IOC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//根据接口类型获取IOC容器中的bean
HelloWord helloWord = (HelloWord) applicationContext.getBean(Hello.class);
helloWord.sayHello();
}
3、Spring之入门案例的更多相关文章
- 1.Spring框架入门案例
一.简单入门案例 入门案例:IoC 1.项目创建与结构 2.接口与实现类 User.java接口 package com.jd.ioc; /** * @author weihu * @date 201 ...
- Spring Boot 入门案例与配置说明
一.Spring Boot简介 官网地址:http://spring.io/projects/spring-boot Spring Boot可以轻松创建可以运行的独立的,生产级的基于Spring的应用 ...
- Spring Boot 集成 Spring Security 入门案例教程
前言 本文作为入门级的DEMO,完全按照官网实例演示: 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.boot&l ...
- Springboot 系列(一)Spring Boot 入门篇
注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 由于 J2EE 的开发变得笨重,繁多的配置, ...
- SSM-Spring-01:Spring的概念+入门案例
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Spring 提起Spring,就会想到企业级框架这个词 企业级系统: 1.大规模:用户数量多,数据规模庞大, ...
- spring-cloud-Zuul学习(一)【基础篇】--入门案例【重新定义spring cloud实践】
-- 2 ...
- spring boot入门小案例
spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...
- spring入门--spring入门案例
spring是一个框架,这个框架可以干很多很多的事情.感觉特别吊.但是,对于初学者来说,很难理解spring到底是干什么的.我刚开始的时候也不懂,后来就跟着敲,在后来虽然懂了,但是依然说不明白它到底是 ...
- Spring IOC - 控制反转(依赖注入) - 入门案例 - 获取对象的方式 - 别名标签
1. IOC - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交 由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周 ...
- Spring学习笔记(一)—— Spring介绍及入门案例
一.Spring概述 1.1 Spring是什么 Spring是一个开源框架,是于2003年兴起的一个轻量级的Java开发框架, 由Rod Johnson 在其著作<Expert one on ...
随机推荐
- 2022-05-28:某公司计划推出一批投资项目。 product[i] = price 表示第 i 个理财项目的投资金额 price 。 客户在按需投资时,需要遵循以下规则: 客户在首次对项目 pr
2022-05-28:某公司计划推出一批投资项目. product[i] = price 表示第 i 个理财项目的投资金额 price . 客户在按需投资时,需要遵循以下规则: 客户在首次对项目 pr ...
- 2021-08-02:按公因数计算最大组件大小。给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记;只有当
2021-08-02:按公因数计算最大组件大小.给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记:只有当 ...
- DataGridViewImageColumn 图片照片
Private Sub BT_PHOTOADDRESS_Click(sender As Object, e As EventArgs) Handles BT_PHOTOADDRESS.Click Di ...
- (偶尔更新)【Linux】Linux常见不常用命令收集
本文时间 2023-05-20 作者:sugerqube漆瓷 cd,vi,clear这些属于常见常用命令本文不再赘述. 安装命令 yum install vim举例安装vim rpm -ivh a.r ...
- antd 在webpack.config配置主题色
虽然官方提供了craco-less 来 覆盖less-loader 提供的 less 变量,但自己也想试着修复config来配置一下 首先需要运行 yarn eject 来暴露webpack的配置 其 ...
- CreateProcess error=2, 系统找不到指定的文件。
遇到一个android 配置.gradle时提示CreateProcess error=2, 系统找不到指定的文件 于是百度有很多这类答案,如:干掉NDK 我按照这么做了,最后顽固的bug 并没有理睬 ...
- 自研ORM嵌套查询和子查询,强不强大您说了算。
测试代码 var count = 0; var refAsync = new RefAsync<int>(); //下面示例方法的重载均支持 var query = db.Query< ...
- 如何在 Python 中实现遗传算法
前言 遗传算法是一种模拟自然进化过程与机制来搜索最优解的方法,它由美国 John Holland 教授于20世纪70年代提出.遗传算法的主要思想来源于达尔文生物进化论和孟德尔的群体遗传学说,通过数学的 ...
- 非常简单好用实用的轮播图swiper banner组件
非常简单好用实用的轮播图swiper banner组件; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12786 效果图如下: ...
- 代理详解(java代理和CGLIB动态代理)
[代理]大家都知道,特别是在spring中aop.spring中的事务.spring解析注解@Configuration,以及最原始的解析spring.xml的配置,这些都是使用代理来进行实现的, ...