Spring 环境搭建与IOC HelloWorld

1 博客课程内容简述

关于Spring的简介请移步Spring官网或者我的另一篇博客Spring简介进行查看,这篇博客内容主要介绍Spring IOC 快速入门,让你通过简单的代码快速了解Spring IOC 到底是一个什么东东。

2 Spring maven环境的搭建

第一步引入我们spring的核心依赖

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.4.RELEASE</version>
    </dependency>

然后在引入日志和测试相关的依赖

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.5</version>
		<scope>compile</scope>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.10</version>
	</dependency>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.14</version>
		<scope>runtime</scope>
	</dependency>
	<!-- Test Artifacts -->
  	<dependency>
	
	 <groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>5.1.4.RELEASE</version>
		<scope>test</scope>
	</dependency>
    <dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
	</dependency> 

在/springexamples/src/main/resources/下创建log4j.properties 内容如下:

log4j.rootCategory=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L - %m%n

在 /springexamples/src/main/resources/下创建Spring 配置文件ioc-helloworld-context.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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx.xsd ">

</beans>

3 IOC 之xml版本

首先创建我们的测试类 IocHelloWorldXml 里面有一个方法say() 输入内容为:xml hello word… 具体内容如下:

package cn.zhuoqianmingyue.ioc;


public class IocHelloWorldXml {
	public void say() {
		System.out.println("xml hello word....");
	}
}

在spring配置文件中通过添加bean来配置我们的测试类具体方式如下:

 <bean id="iocHelloWorldXml"  class="cn.zhuoqianmingyue.ioc.IocHelloWorldXml"></bean> 

id: 是获取bean的唯一标识 同一个配置文件中不允许出现相同id的bean
class:指定bean的类路径。

测试我们的配置是否生效:
需要说明的是通过ClassPathXmlApplicationContext 来获取我们的上下文对象(ApplicationContext)需要将spring的配置文件(ioc-helloworld-context.xml)放在src 目录下。
测试类的具体代码如下:

public class IocHelloWorldNotAnnotationTest {
	
	private static Logger log = LoggerFactory.getLogger(IocHelloWorldNotAnnotationTest.class);
	ApplicationContext appliction = null;
	@Before
	public void initApplication() {
		 appliction = new ClassPathXmlApplicationContext("ioc-helloworld-context.xml");
	}
	@Test
	public void classPathXml() {
		IocHelloWorldXml iocHelloWorld = (IocHelloWorldXml)appliction.getBean("iocHelloWorldXml");
		iocHelloWorld.say();
		IocHelloWorldAnnotation iocHelloWorldAnnotation = (IocHelloWorldAnnotation)appliction.getBean("iocHelloWorldAnnotation");
		iocHelloWorldAnnotation.say();
	}

测试结果:
在这里插入图片描述

4 IOC 之 注解版本

注解版相对与配置版更为简单首先在我们定义的测试类上声明@Component()注解然后为其制定名称 例如:@Component(“iocHelloWorldAnnotation”) 这里的iocHelloWorldAnnotation和下图中是相同的。
在这里插入图片描述
具体代码如下:

@Component("iocHelloWorldAnnotation")
public class IocHelloWorldAnnotation {
	public void say() {
		System.out.println("annotation hello word....");
	}
}

第二就是需要在spring的配置文件中添加 注解扫描的范围具体代码如下:

<context:component-scan base-package="cn.zhuoqianmingyue"></context:component-scan>

完成上面2步我们的IOC注解版本就搞定啦 接下来进行测试我们的注解配置,具体测试代码如下:

	@Test
	public void classPathXml() {
		IocHelloWorldAnnotation iocHelloWorldAnnotation = (IocHelloWorldAnnotation)appliction.getBean("iocHelloWorldAnnotation");
		iocHelloWorldAnnotation.say();
	}

在这里插入图片描述

5 FileSystemXmlApplicationContext 和ClassPathXmlApplicationContext 的区别

我们上面已经通过ClassPathXmlApplicationContext 方式来获取Spirng上下文对象 我们也可以通过FileSystemXmlApplicationContext 来获取Spirng上下文对象方式和ClassPathXmlApplicationContext 一样。具体的区别如下

  • FileSystemXmlApplicationContext 获取的是工程目录下的spring配置文件
  • ClassPathXmlApplicationContext 获取的是src 目录下的spring配置文件

6 通过注解的方式进行Spring 上下文测试

关于上下文对象获取测试Spring为我们提供注解的方式,相对于上面通过 ClassPathXmlApplicationContext 更为简便一点。具体操作如下:
1 编写测试类 然后在测试类上声明@RunWith(SpringRunner.class) 标签 然后在声明@ContextConfiguration 来制定要加载的配置文件,

@RunWith(SpringRunner.class)
@ContextConfiguration(locations= {"classpath:ioc-helloworld-context.xml"})
public class IocHelloWorldAnnotationTest {......

2 通过@Autowired 将声明的bean注入到测试类中

public class IocHelloWorldAnnotationTest {.
	 @Autowired
	 private  IocHelloWorldXml iocHelloWorldXml;
	.......
	}

3 调用声明的bean 进行测试

	 @Test
	 public void sayXml() {
		 iocHelloWorldXml.say();
	 }

github源码地址
下载源码

到此为止我们的Spring IOC(控制反转)helloword 演示完毕,觉得鄙人写的还行就给点个赞呗。 后面我们将详细介绍IOC 相关的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值