Spring 环境搭建与IOC HelloWorld

1 博客课程内容简述

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

2 Spring maven环境的搭建

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

    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-coreartifactId>
        <version>5.1.4.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-beansartifactId>
        <version>5.1.4.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>5.1.4.RELEASEversion>
    dependency>

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

	<dependency>
		<groupId>org.slf4jgroupId>
		<artifactId>slf4j-apiartifactId>
		<version>1.7.5version>
		<scope>compilescope>
	dependency>
	<dependency>
		<groupId>org.slf4jgroupId>
		<artifactId>slf4j-log4j12artifactId>
		<version>1.7.10version>
	dependency>
	<dependency>
		<groupId>log4jgroupId>
		<artifactId>log4jartifactId>
		<version>1.2.14version>
		<scope>runtimescope>
	dependency>
	
  	<dependency>
	
	 <groupId>org.springframeworkgroupId>
		<artifactId>spring-testartifactId>
		<version>5.1.4.RELEASEversion>
		<scope>testscope>
	dependency>
    <dependency>
			<groupId>junitgroupId>
			<artifactId>junitartifactId>
			<version>4.12version>
			<scope>testscope>
	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 内容如下:


<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();
	}

Spring 环境搭建与IOC HelloWorld_第1张图片

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 相关的内容。

你可能感兴趣的:(【Spring】)