Spring入门案例

需求:使用Spring框架不用new创建一个对象

配置步骤

第一步:搭建环境

1.创建一个Java项目

在这里插入图片描述

–选中创建

在这里插入图片描述
–创建目录结构

在这里插入图片描述

2.导入包,String的基础支撑包和依赖的日志包复制到lib文件下,并且加入项目中
—导入Spring基础支撑包

在这里插入图片描述
–导入Spring依赖的日志包

在这里插入图片描述

第二步:创建配置文件

1. 在项目的src下面创建配置文件applicationContext.xml中并完成配置文件的约束,约束查找位置(spring框架/docs/spring-framework-reference/html/beans.html)
<?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>

第三步:创建对象到容器里面

1. 创建一个类
package com.spring.service;

public class CustomService {
	
	public void say() {
		System.out.println("Hello World");
	}

}

2.applicationContext.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">
        <!-- 
        	让Spring框架管理对象/类
        	bean标签:spring管理对象的标签。作用:用于声明一个类,在启动Spring框架的时候根据该配置的类创建对象到容器里面
        		id:唯一标识,以供其他地方调用时的引用
        		class:被管理的类的全限定名。表示需要spring创建哪个类的对象.
         -->
        <bean id="customService" class="com.spring.service.CustomService"/>
</beans>

3.测试

package com.spring.test;

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

import com.spring.service.CustomService;

public class SpringTest {
	
	@Test
	public void testName() throws Exception {
		//传统方式
//		CustomService customService = new CustomService();
//		customService.say();
		
		//控制反转
		//1.读取Spring配置文件,启动Spring框架,创建Spring容器对象
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		//2.从Spring容器中对象获取CustomService
		//getBean(“<bean>标签 id 值”,返回值类型);如果没有第二个参数,默认是 Object
		CustomService customService = applicationContext.getBean("customService",CustomService.class);
		customService.say();
		
		// getBeanDefinitionNames(),Spring容器中目前所管理的所有对象.
		String[] beanStrings = applicationContext.getBeanDefinitionNames();
		for (String string : beanStrings) {
			System.out.println("spring容器目前管理的对象:"+string);
		}
	}

}

4.结果图

在这里插入图片描述

Spring容器的两个实现

在这里插入图片描述

ClassPathXmlApplicationContext:通过classpath路径直接获得加载的xml文件(推荐使用)
FileSystemXmlApplicationContext:通过文件路径来获得加载的xml文件。

在这里插入图片描述

bean标签的细节详解

bean标签的作用

用于声明一个类,在启动Spring框架的时候根据该配置的类创建对象到容器里面

属性说明

	<!-- <bean>标签:用于声明一个类,在启动Spring框架的时候根据该配置的类创建对象到容器里面
	     name:设置对象名(唯一标识符),可以有多个名称,每个名称用逗号隔开 :  name1,name2。或者每个名称用空格隔开:name1 name2
	     id:设置对象名(唯一标识符,功能和name一样)。不能有多个
	     class:用于指定对象对应的类名
	     scope:用于设置的对象的作用范围,可选参数如下:
	        *singleton:单例(默认)。表示从spring容器中无论取出该对象多少次,他们都是在同一个堆空间。
                对象出生:当程序加载配置文件创建容器时,创建
                对象活着:只要容器还在,一直活着
                对象死亡:应用停止,容器销毁,对象死亡
	        *prototype:多例(原型对象)。表示从spring容器中取出该对象几个,他们就会在堆空间划分出几次空间。
                对象出生:当程序加载配置文件创建容器时,创建
                对象活着:只要对象被使用,一直活着
                对象死亡:对象长时间不用,会被Java垃圾回收机制回收
	        *reqeust:web项目中,Spring将创建的对象放在request作用域中
	        *session:web项目中,Spring将创建的对象放在session作用域中
	        *globalSession:web项目中,应用域portlet环境,如果没有protlet环境相当于session
	    init-method:设置创建对象的时候,调用初始化方法。值为:方法名
	    destroy-method:设置对象被回收时,调用注销的方法。值为:方法名
	      当对象为单例时,容器关闭才会调用注销方法。多例是不会去调的。
	    
	  -->
	<bean name="customServiceImpl"    class="com.zj.spring.service.impl.CustomServiceImpl"></bean>


scope属性测试

--当scope为单例时

在这里插入图片描述

–当scope为多例时

在这里插入图片描述

Bean作用范围

作用范围也可以说生命周期(bean能存活多久)

在这里插入图片描述
在开发中主要使用 scope=“singleton”、 scope=“prototype”
对于MVC中的Action/Controller使用prototype类型,其他使用singleton

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值