Spring学习笔记一

   在最近面试的单位好像使用Spring的比较多,我还是在入职之前先再次的回顾一下Spring这个框架的相关原理以及使用方法。

照例我们还是以应用为驱动,先了解我们该怎么应用这个Spring来完成我们的功能。

          Spring对于我们来说基本上是控制反转和依赖注入用的比较多,所以我们这里我们先从这个控制反转进行最基础的学习。

所以我们就新建一个项目导入spring的相关JAR


   关于这些jar包我只是将spring-framework下载下来的文件夹中的lib一下的jar包都做了导入即可。

   然后我们创建一个新的Test类以及相关JUNITjar包的导入。

   之后我们需要在src文件夹下面创建一个spring-config.xml的文件,具体的内容可以从spring下载的时候的或者是网上下一个,我们只需要保留最基础的beans的节点即可,然后可以直接删除中间包含的部分,再用我们自己写的替代。

   

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

 

   xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 

                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 

               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> 

 

<bean id = "firstBean" class = "test.bean.FirstBean"></bean>

</beans>

然后我们来看我们创建的两个测试类

package test.bean;

public class FirstBean {

	public void test(){
		System.out.println("zhengfang.sun test");
	}
}

以及我们的测试入口类

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

import test.bean.FirstBean;

public class SpringTest {

	@Test
	public void test001(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-config.xml");  
		
		FirstBean firstBean = (FirstBean)ctx.getBean("firstBean");
		firstBean.test();
	}
}

   我们运行测试入口类可以获得如下的结果,zhengfang.sun test

   有了一个实例然后我们再反过来讲讲我们测试类的原理,其实我们通过查看这个测试本身有三个文件。两个java文件以及一个xml文件,其中我们在SpringTest中通过java代码读取我们的spring配置文件然后我们再根据我们的“firstBean”的beanId通过我们的配置文件获取到了一个FirstBean的实例。

   接下来我们就要考虑一个问题了,就是我们获取的这个FirstBean是不是一个单例,这个是个比较严肃的问题,因为在我们的应用中这个特点决定了我们对于这个方式获取Bean实例的使用方法,测试的方法也比较简单,我们只要通过多次获取查看是不是同一个引用即可。

@Test
	public void test002(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-config.xml");  
		
		FirstBean firstBean = (FirstBean)ctx.getBean("firstBean");
		FirstBean firstBean1 = (FirstBean)ctx.getBean("firstBean");
		System.out.println(" firstBean1 == firstBean = "+(firstBean == firstBean1));
	}

   然后我们发现输出的结果如下情况:

 firstBean1 == firstBean = true

   显而易见的我们其实在这里获取的是同一个Bean,在获知了这个信息的基础下我们可以判断到这个Bean的创建时间是在我们第一次请求获取这个Bean的时间或者之前,我们通过稍微修改我们的test002然后我们再Debug一下我们可以清晰的发现我们这个Bean的创建是在xml读取完成之后。

package test.bean;

public class FirstBean {

	{
		System.out.println("Bean created");
	}
	
	public void test(){
		System.out.println("zhengfang.sun test");
	}
}




也就是说我们这个测试的基本过程为如下情况

1,通过spring读取配置文件创建单例Bean

2,我们通过spring以及我们配置在配置文件中的BeanId获取我们需要的Bean实例

3,调用bean实例的方法




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值