使用注解将 Vaadin 6.7.3 和 Spring 3.0.5 整合 (二 使用spring中的Bean)

   上次只是吧vaadin和spring整合到一起了,如果要在vaadin的页面中使用spring中的bean我用的是注解注入的方法(构造函数注入、属性注入),

   1.页面对象

    如这是我的一个自定义页面

package com.iyspace.manager.ui.user;

import java.net.MalformedURLException;
import java.net.URL;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.vaadin.terminal.ExternalResource;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
@Component
@Scope("prototype")
public class GroupPage extends VerticalLayout {
	private static final long serialVersionUID = -3699494967134807703L;
	private Panel panel;
	public GroupPage(){
		init();
	}
	
	public void  init(){
		URL url;
		try {
			url = new URL("http://www.baidu.com");
			Embedded browser = new Embedded("", new ExternalResource(url));
			browser.setType(Embedded.TYPE_BROWSER);
			browser.setSizeFull();
			this.addComponent(browser);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

    该页面继承 com.vaadin.ui.VerticalLayout 布局类,内嵌了一个iframe内容链接是 baidu.com使用注解将 Vaadin 6.7.3 和 Spring 3.0.5 整合 (二 使用spring中的Bean)

    在使用该页面时不是直接去new一个对象而是将该页面纳入spring的管理这样页面就可以使用spring中的bean了。

    注解Component 将页面纳入spring容器的管理,Scope注解指定每次(每次请求时)得到一个新的页面。

    2.得到页面对象

    自定义ViewManager类,继承org.springframework.context.ApplicationContextAware,使用spring的反射得到spring容器中的页面对象

package com.iyspace.manager.ui;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.iyspace.manager.VaadinmanagerApplication;
import com.iyspace.manager.ui.main.MainWindow;

@Component
@Scope("session")
public class ViewManager implements ApplicationContextAware {

	private ApplicationContext applicationContext;
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		this.applicationContext = applicationContext;
	}
	public <T> T createView(Class<T> viewClazz){
		T view = applicationContext.getBean(viewClazz);
		return view ;
	}
	
	public <T> T switchView(Class<T> viewClazz){
		T view = applicationContext.getBean(viewClazz);
		com.vaadin.ui.Component c = (com.vaadin.ui.Component)view;
		c.setSizeFull();
		VaadinmanagerApplication.get().mainWindow.switchView(c);
		return view;
	}
	
}