Spring 中使用資源

        在Web應用中如果自已的程序裏面需要用到外部資源文件(配置文件),一般會把配置文件放在classes下面或WEB-INF下面。如果加載這結文件的話通常有兩種辦法。一是寫絕對路徑,這是最不推薦的方法。二是引入ServletContext,從相對路徑中獲得絕對路徑。寫相對路徑的時候使用ServletContext是免不了的,我的應用服務器是Tomcat,使用相對路徑找文件都是在Tomcat的Bin文件夾下面找,所以我只能用ServletContext來找。後來,爲了使程序能脫離Servlet容器運行,就引入了Spring的資源管理機制。
       Spring爲資源管理提供了一個Resource接口,並提供了幾個Resource的實現。它們都需要一個String表示的資源的實際位置。依據這個String,Spring將會自動爲你選擇正確的Resource實現。
       下面一段代碼,我爲了得到一個資源的位置,定義了個屬性,一個是file代表文件的路徑(相對或絕對),一個是Resouce接口的屬性。在Spring的任何Context中都可以通過設置Resource的屬性來得到資源的位置。
       private String file;

    private Resource resource;

    public void setResource(Resource resource) {
        this.resource = resource;
        try {
            this.file = resource.getFile().getAbsolutePath();
        catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }

    public void setFile(String file) {
        this.file = file;
    }

   
       Spring配置文件如下:
       <bean id="mybean" class="net.jf.mybean">
            <property name="resource">
                <value>/WEB-INF/config.xml</value>
            </property>
        </bean>   
    上面的例子是在WebApplicationAContext中的。Spring會根據Context的運行環境決定去哪裏加載資源。如果是Application程序。即使用類似ClassPathXmlApplicationContext這樣的Context,Spring則會使用ClassPathSource來代表資源。將會在程序運行時的ClassPath中尋找資源。但要注意一點。Spring目前能找到的資源是在FileSystem中的。而不能找到Jar包裏面的資源,就算你的資源的確在ClassPath當中。這一點在JavaDoc裏有說明。我又是在犯是同樣的錯誤後纔想到去查找文檔。。。嘿。教訓啊。
    這些只是很粗淺的用法。記下來以備忘 。。如果有不正確或不妥當的地方還望指正。:)
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章