Spring @Service 注释
Spring @Service注释是@Component注释的特化。Spring Service 注释只能应用于类。它用于将类标记为服务提供者。
Spring @Service注解
Spring @Service注释用于提供某些业务功能的类。当使用基于注释的配置和类路径扫描时,Spring 上下文将自动检测这些类。
Spring @Service示例
让我们创建一个简单的 Spring 应用程序,在其中创建一个 Spring 服务类。在 Eclipse 中创建一个简单的 Maven 项目并添加以下 Spring 核心依赖项。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
我们的最终项目结构如下图所示。让我们创建一个服务类。
package com.journaldev.spring;
import org.springframework.stereotype.Service;
@Service("ms")
public class MathService {
public int add(int x, int y) {
return x + y;
}
public int subtract(int x, int y) {
return x - y;
}
}
请注意,它是一个简单的 Java 类,提供两个整数相加和相减的功能。所以我们可以称它为服务提供商。我们用@Service注释对其进行了注释,以便 Spring 上下文可以自动检测它,并且我们可以从上下文中获取它的实例。让我们创建一个主类,我们将在其中创建注释驱动的 Spring 上下文以获取我们的服务类的实例。
package com.journaldev.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringMainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
MathService ms = context.getBean(MathService.class);
int add = ms.add(1, 2);
System.out.println("Addition of 1 and 2 = " + add);
int subtract = ms.subtract(2, 1);
System.out.println("Subtraction of 2 and 1 = " + subtract);
//close the spring context
context.close();
}
}
只需将该类作为 Java 应用程序执行,它将产生以下输出。
Jun 05, 2018 3:02:05 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 15:02:05 IST 2018]; root of context hierarchy
Addition of 1 and 2 = 3
Subtraction of 2 and 1 = 1
Jun 05, 2018 3:02:05 PM org.springframework.context.support.AbstractApplicationContext doClose
INFO: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 15:02:05 IST 2018]; root of context hierarchy
如果您注意到我们的 MathService 类,我们将服务名称定义为“ms”。我们也可以获取使用此名称的实例MathService
。在这种情况下,输出将保持不变。但是,我们必须使用显式转换。
MathService ms = (MathService) context.getBean("ms");
这就是 Spring @Service注释的快速示例。
您可以从我们的GitHub 存储库下载示例项目代码。
参考:API文档