Spring boot with Service

本文节选自《Netkiller java 手札》

5.7. Service

5.7.1. Application

@ComponentScan({ "web", "rest","service" }) 一定要包含 Service 目录。否则无法实现 @Autowired自动装配。你可以直接@ComponentScan扫描所有目录。

			import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.authentication.UserCredentials;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.Mongo;

import pojo.ApplicationConfiguration;

@Configuration
@SpringBootApplication
@EnableConfigurationProperties(ApplicationConfiguration.class)
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
@ComponentScan({ "web", "rest","service" })
@EnableMongoRepositories
public class Application {
	
	@SuppressWarnings("deprecation")
	public @Bean MongoDbFactory mongoDbFactory() throws Exception {
		UserCredentials userCredentials = new UserCredentials("finance", "your_password");
		return new SimpleMongoDbFactory(new Mongo("mdb.netkiller.cn"), "finance", userCredentials);
	}

	public @Bean MongoTemplate mongoTemplate() throws Exception {
		return new MongoTemplate(mongoDbFactory());
	}

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}			

5.7.2. 定义接口

TestService 接口

			package service;

public interface TestService {

	public String getName();
	public String toString();
	public String helloUser(String user);
}			

5.7.3. 实现接口

实现 TestService 接口

			package service.impl;

import org.springframework.stereotype.Component;

import service.TestService;

@Component
public class TestServiceImpl implements TestService {

	public String name = "Test";

	public void TestService() {

	}

	@Override
	public String helloUser(String user) {
		return "hello " + user;
	}

	public String getName() {
		return this.name;
	}

	@Override
	public String toString() {
		return "TestServiceImpl [config=" + this.name + "]";
	}

}			

5.7.4. 调用 Service

控制器中调用 Service

			package web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import domain.City;
import pojo.ApplicationConfiguration;
import repository.CityRepository;
import service.TestService;

@Controller
public class IndexController {
	
	@Autowired
    private TestService testService;
	
	@RequestMapping("/service")
	@ResponseBody
	public String service() {
		return testService.helloUser("Neo");
	}

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2017-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java思维导图

【1024程序员节】致敬所有程序员

2002年,俄罗斯程序员Valentin Balt收集签名,向俄罗斯联邦政府请愿将9月13日设定为程序员节。2009年9月11日,俄罗斯总统梅德韦杰夫在节日安排...

762
来自专栏肖洒的博客

西电睿思年度非官方关键字榜单

首先要说的是真的特别喜欢睿思,也特别喜欢它的宗旨!“永远不去谋求任何商业利益,只为西电人有一个高速下载的地方,有一个开心聊天交朋友的地方而努力”。睿思背后的技术...

571
来自专栏battcn

今天,我们说点不一样的

之所以定10/24这天是因为1024等于2的10次方,它是一个被程序员们所熟知的常用整数。

833
来自专栏区块链大本营

会撸猫了不起啊?有本事自己写一个撸猫撸鱼撸飞机才是牛逼

4097
来自专栏领域驱动设计DDD实战进阶

DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(实现经销商上下文领域层之POCO模型)

从这篇文章开始,我们开始介绍大健康行业直销系统领域层的实现。 先简单讲下业务方面的需求:直销系统会有一个顶级的经销商,经销商的基本信息中包括经销商的名字、联系人...

2907
来自专栏Java Web

背包问题

问题描述 假设你是一个贪婪的小偷,背着可以装35磅重东西的背包,在商场伺机偷窃各种可以装入背包的商品。 ? 你力图往背包中装入价值最高的商品,你会用哪种算法呢?...

2545
来自专栏企鹅号快讯

编程语言之父

C创始人,Dennis Ritchie ,丹尼斯•里奇被世人尊称为“无形之王的C语言之父”,是计算机及网络技术的奠定者,曾担任朗讯科技公司贝尔实验室下属的计算机...

2057
来自专栏领域驱动设计DDD实战进阶

DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(实现经销商上下文领域层之POCO模型)

892
来自专栏编舟记

敏捷活动实践 —— 验收条件

在故事基础部分,我提到用户故事通常是日常或者商务语言写成的句子,这些句子描述了用户在其工作职责范围内想要达成的某个目的以及达成该目的需要的功能(手段)。所以书写...

1316
来自专栏数据的力量

最近很火的一条励志公式

1.01=1+0.01,也就是每天进步一点。1.01的365次方也就是说你每天进步一点点,一年以后,你将进步很大,远远大于“1”

822

扫码关注云+社区