2013-04-02 28 views
1

我們正在構建一個Web應用程序,並且HttpServer已啓動後,我試圖從數據庫中將一些項加載到內存中。我知道如何利用服務層的最好方法是使用以下類:ApplicationContext對於Web應用程序爲空

import org.springframework.context.ApplicationContext; 
import org.springframework.context.ApplicationContextAware; 

public class ApplicationContextProvider implements ApplicationContextAware { 
    private static ApplicationContext applicationContext; 

    public static ApplicationContext getApplicationContext() { 
     return applicationContext; 
    } 

    public void setApplicationContext (ApplicationContext applicationContext) { 
     this.applicationContext = applicationContext; 
    } 
} 

它是連續的空。

public static void main(String[] args) throws IOException { 
    final HttpServer server = HttpServer.createSimpleServer(".", 8181); 

    WebappContext ctx = new WebappContext("Socket", "/"); 

    //enable annotation configuration 
    ctx.addContextInitParameter("contextClass", "org.springframework.web.context.support.AnnotationConfigWebApplicationContext"); 
    ctx.addContextInitParameter("contextLocation", "com.production"); 

    //allow spring to do all of it's stuff 
    ctx.addListener("org.springframework.web.context.ContextLoaderListener"); 

    //serve static assets 
    StaticHttpHandler staticHttpHandler = new StaticHttpHandler("src/main/web"); 
    server.getServerConfiguration().addHttpHandler(staticHttpHandler, "/"); 

    //deploy 
    ctx.deploy(server); 

    //NULL 
    WorkflowService workflowService = (WorkflowService) ApplicationContextProvider.getApplicationContext().getBean("workflowService"); 

    server.start(); 

服務類標註有@Service和我的配置類是...

@Configuration 
@ComponentScan(basePackages = { 
     "com.production" 
}) 
@PropertySource(value= { 
     "classpath:/application.properties", 
     "classpath:/environment-${MYAPP_ENVIRONMENT}.properties" 
}) 
@EnableJpaRepositories("com.fettergroup.production.repositories") 
@EnableTransactionManagement 
public class Config { 

    ... 

    @Bean 
    public ApplicationContextProvider applicationContextProvider() { 
     return new ApplicationContextProvider(); 
    } 
} 

我相信一些關於使用灰熊WebContext是什麼,是在問題的根源這個應用程序。但我不確定該怎麼做。我做了一些谷歌搜索,似乎我使用應該工作的解決方案......

+0

據我unstand sever.start後」代碼中的服務將是可用( )',因爲在服務器啓動期間會加載spring上下文。 –

回答

1

contextLocation初始化參數應該是contextConfigLocation

+0

是的!謝謝!! – Webnet