本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性
1 环境搭建
1.1 Maven依赖
目前只用到依赖注入的功能,故以下三个包已满足使用。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.7.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
1.2 Spring相关配置
在resources目录新建spring-config.xml文件,主要内容如下:
<!--配置包扫描路径-->
<context:component-scan base-package="com.study"></context:component-scan>
<!--启用注解-->
<context:annotation-config></context:annotation-config>
1.3 主要代码
只展示ProductServiceImpl.java和APP.java文件,其他工程代码放到了GitHub上。
package com.study.service.impl;
import com.study.service.ProductService;
import org.springframework.stereotype.Service;
/**
* @author frankwin608
* @create 2018-07-09 23:56
* @desc 商品服务实现类
**/
@Service
public class ProductServiceImpl implements ProductService{
@Override
public String queryProductNameById(String id) {
return "Hello Kitty";
}
}
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring-config.xml"});
ProductService productService = (ProductService) context.getBean("productServiceImpl");
String productname = productService.queryProductNameById("23333");
System.out.println("productname = " + productname);
}
}
2 运行结果
3 总结分析
(1)通过context:annotation-config开启支持注解模式
(2)通过context:component-scan设置扫描,base-package指定了扫描的包路径
(3)在ProductServiceImpl类中将该类注解为@Service,该注解将该类标记为一个bean,交由Spring容器进行管理
(4)在App类中,通过读取配置文件并通过上下文的getBean方法获得productServiceImpl的实例,最后调用相应的方法获得结果。
(5)通过引入Spring的自动注入(实例化)的功能减少了自己手动new对象(具体好处参考Spring依赖注入的好处),