文档章节

Virgo与Maven整合开发环境搭建(三)

蒲晓伟
 蒲晓伟
发布于 2015/11/13 12:01
字数 1101
阅读 24
收藏 0

             3.MP3、Picture

                     先来看picture搜索实现.

                     pom中,打包规则可以继承自应用类bundle打包规则。除了打包规则,还需要加入spring的依赖和api包的依赖。

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>org.springframework.spring-library</artifactId>
			<type>libd</type>
                        <version>3.5.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.phantom.demo</groupId>
			<artifactId>org.phantom.demo.api</artifactId>
			<version>1.0.0-SNAPSHOT</version>
		</dependency>

                     添加完依赖,可以进行代码编写了.先来看PictureSearchBean,我们让picture对象拥有两个属性,图片标题和图片链接.类很简单,作为数据载体及bundle通讯时传递的实体对象.

package org.phantom.demo.search.picture;

import org.phantom.demo.api.SearchBean;

public class PictureSearchBean implements SearchBean {

	private String title;
	private String url;
	public PictureSearchBean() {
	}
	public PictureSearchBean(String title, String url) {
		this.title = title;
		this.url = url;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}

}

                       接下来看picture搜索业务的实现代码,同样也很简单.我们为了简便,模拟一些本地数据,表明意思即可.

package org.phantom.demo.search.picture;

import java.util.ArrayList;
import java.util.List;

import org.phantom.demo.api.SearchBean;
import org.phantom.demo.api.SearchHandler;
import org.springframework.stereotype.Service;


@Service("pictureSearch")
public class PictureSearchHandler implements SearchHandler {

	private static List<PictureSearchBean> beans = new ArrayList<PictureSearchBean>();
	
	static{
		beans.add(new PictureSearchBean("aaaaa", "aaaaaa"));
		beans.add(new PictureSearchBean("bbbbb", "vvvvvv"));
		beans.add(new PictureSearchBean("ccccc", "aaaaaa"));
		beans.add(new PictureSearchBean("daaddd", "aaaaaa"));
		beans.add(new PictureSearchBean("ddddd", "aaaaaa"));
	}
	
	
	public List<? extends SearchBean> doSearch(String key) {
		List<PictureSearchBean> temp = new ArrayList<PictureSearchBean>();
		for (PictureSearchBean b : beans) {
			if(b.getTitle().contains(key))
				temp.add(b);
		}
		return temp;
	}

}

                       通过key遍历数据,找到符合要求的返回.一个很简单的service.接下来看如何将这个服务发布.再普通OSGI中,发布该服务也不是很难,编写几行代码就ok了.

bundleContext.registerService(SearchHandler.class,new PictureSearchHandler(),null);

                        在Virgo中(这里看作Spring-DM),其实也是这样注册的,只不过这行代码不需要你亲自写.把注册service的事情完全交给spring去做.第一步,将这个类发布成Spring bean.

@Service("pictureSearch")

                         然后,来看一下spring配置文件.META-INF/spring/applicationContext.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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd">
		
	<context:component-scan  base-package="org.phantom.demo.search.picture"/>
	<osgi:service ref="pictureSearch" interface="org.phantom.demo.api.SearchHandler"/>
  </beans>

                        大致解释一下这个配置文件.将spring-osgi-schema导入

xmlns:osgi="http://www.springframework.org/schema/osgi"

                         然后打开注解扫描,将bean加入到spring的管理中,重点就是下面一句.

<osgi:service ref="pictureSearch" interface="org.phantom.demo.api.SearchHandler"/>

                         这样就将一个bean发布成OSGI的service了.osgi:service还有一些其他属性,这里不过多介绍.这篇文章的目的是向大家介绍我们在开发中如何使用Virgo,如何与Maven集成开发.其他的内容,我相信,当你看到这里的时候,肯定具有一定的学习能力.自己去查一下就OK.

                          再来看一下Picture的OSGI描述.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: picutre search module
Bundle-SymbolicName: org.phantom.demo.search.picture
Bundle-Version: 1.0.0.SNAPSHOT
Excluded-Imports: org.phantom.demo.search.picture
Import-Template: org.springframework.*;version="[3.0.5,4)"
Import-Package: org.springframework.context.config;version="[3.0.5,4)",
 org.eclipse.gemini.blueprint.config;version="[1.0.0,2)"

                         我们template.mf中没有写任何api包的东西,但是它肯定是依赖api包的.这就交给bundlor插件去做吧,给我们节省一点时间.可以打开最后生成的MANIFEST.MF看一下

                       我们按照同样的方式,开发另一个实现.MP3

                           再贴一些关键代码和配置.其实基本和Picture一模一样.

package org.phantom.demo.search.mp3;

import org.phantom.demo.api.SearchBean;

public class Mp3SearchBean implements SearchBean{

	private String name;
	private String singer;
	
	public Mp3SearchBean() {
	}
	public Mp3SearchBean(String name, String singer) {
		this.name = name;
		this.singer = singer;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSinger() {
		return singer;
	}
	public void setSinger(String singer) {
		this.singer = singer;
	}
}

 

package org.phantom.demo.search.mp3;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import org.phantom.demo.api.SearchBean;
import org.phantom.demo.api.SearchHandler;

@Service("mp3Search")
public class Mp3SearchHandler implements SearchHandler{

	private static List<Mp3SearchBean> beans = new ArrayList<Mp3SearchBean>();
	
	static{
		beans.add(new Mp3SearchBean("aaaaa", "aaaaaa"));
		beans.add(new Mp3SearchBean("bbbbb", "vvvvvv"));
		beans.add(new Mp3SearchBean("ccccc", "aaaaaa"));
		beans.add(new Mp3SearchBean("daaddd", "aaaaaa"));
		beans.add(new Mp3SearchBean("ddddd", "aaaaaa"));
	}
	
	
	public List<? extends SearchBean> doSearch(String key) {
		List<Mp3SearchBean> temp = new ArrayList<Mp3SearchBean>();
		for (Mp3SearchBean b : beans) {
			if(b.getName().contains(key))
				temp.add(b);
		}
		return temp;
	}

}

 

<?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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd">
	<context:component-scan  base-package="org.phantom.demo.search.mp3"/>
	<osgi:service ref="mp3Search" interface="org.phantom.demo.api.SearchHandler"/>
  </beans>

 

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: mp3 search module
Bundle-SymbolicName: org.phantom.demo.search.mp3
Bundle-Version: 1.0.0.SNAPSHOT
Excluded-Imports: org.phantom.demo.search.mp3
Import-Template: org.springframework.*;version="[3.0.5,4)"
Import-Package: org.springframework.context.config;version="[3.0.5,4)",
 org.eclipse.gemini.blueprint.config;version="[1.0.0,2)"

                         pom中加入spring和api的依赖即可.


 

 


 
 

 

本文转载自:http://tiamo.iteye.com/blog/1917353

蒲晓伟
粉丝 1
博文 21
码字总数 1076
作品 0
深圳
技术主管
私信 提问
Struts2+Spring3+Hibernate——整合byMaven

在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框架来开发项目,而这些框架一般不是单独使用的,经常是Str...

凡尘里的一根葱
2015/11/10
245
0
Java Web开发环境的搭建(一)

工欲善其事必先利其器! 搭建开发环境需要使用的软件如下所示: JDK 1.7 / 1.8 JetBrains IDEA 2016.3.2 (集成开发工具) Maven 3.2.5 (项目构建与JAR包管理工具) Git for Windows 2.11 (...

Oxidyc
2016/12/28
103
0
Spring Cloud搭建开发环境

1 开发环境搭建 工欲善其事,必先利其器。在讲述本书的技术内容前,先将开发环境搭建好,本书所涉及基础环境将在本章准备,包括Eclipse、Maven等。 笔者建议读者在查阅本书过程中,使用与本书...

Jokey2017
2017/11/13
0
0
Java Web(1)类库依赖神器搭建——Maven

首先在Maven download下载合适自己平台的maven 2. 我的是在windows下搭建的开发环境,(PS:毕竟学生党,没有mac,对linux又不熟悉。)。然后解压到到一个文件夹中 3. 配置maven的环境变量 主...

Jagery
2015/11/14
67
0
转:Fuse ESB 学习笔记(一)构建

Fuse的SOA功能套件并不是独立开发,而是基于Apache的相关开源产品扩展和完善而来的,通过集成的方式提供了一套较为完整的SOA环境。 例如ESB产品的基础是ServiceMix,Message Broker是来自于 ...

红薯
2010/09/28
3.3K
3

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
今天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
今天
6
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
今天
4
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.5K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部