2016-08-17 23 views
0

靜態資源當春天啓動項目戰爭部署在tomcat的8服務器工作不適合提供圖片

@Configuration 
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     super.addResourceHandlers(registry); 
     registry.addResourceHandler("/**").addResourceLocations("file:///C:/test/"); 
    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 
} 

項目的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0</version> 
    <packaging>war</packaging> 
    <name>project</name> 
    <description>test.</description> 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
     <relativePath/> 
     <!-- lookup parent from repository --> 
    </parent> 
    <properties> 
     <java.version>1.8</java.version> 
     <jersey.version>2.7</jersey.version> 
     <guava.version>18.0</guava.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <!-- Dependencies for GuavaCacheManager --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>${guava.version}</version> 
     </dependency> 
     <!-- Dependencies for Unit Testing --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-mongodb</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-bundle</artifactId> 
      <version>1.11</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>2.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-email</artifactId> 
      <version>1.1</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

應用程序配置

@Configuration 
@SpringBootApplication 
@EnableTransactionManagement 
@EnableCaching 
@EnableAsync 
@EnableAutoConfiguration 
@EnableScheduling 
@ComponentScan 

public class Application { 

    private final Logger logger = LoggerFactory.getLogger(this.getClass()); 

    /** 
    * Entry point for the application. 
    * 
    * @param args 
    *   Command line arguments. 
    * @throws Exception 
    *    Thrown when an unexpected Exception is thrown from the 
    *    application. 
    */ 
    public static void main(final String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 

    /** 
    * Create a CacheManager implementation class to be used by Spring where 
    * 
<code>@Cacheable</code> annotations are applied. 
    * 
    * @return A CacheManager instance. 
    */ 
    @Bean 
    public CacheManager cacheManager() { 
     final GuavaCacheManager cacheManager = new GuavaCacheManager("greetings"); 

     return cacheManager; 
    } 

    /** 
    * Supplies a PasswordEncoder instance to the Spring ApplicationContext. The 
    * PasswordEncoder is used by the AuthenticationProvider to perform one-way 
    * hash operations on passwords for credential comparison. 
    * 
    * @return A PasswordEncoder. 
    */ 
    @Bean 
    public PasswordEncoder passwordEncoder() { 
     this.logger.info("passwordEncoder"); 
     return new BCryptPasswordEncoder(); 
    } 

    public @Bean MongoTemplate mongoTemplate() throws Exception { 

     MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient("127.0.0.1"), "test"); 
     return mongoTemplate; 

    } 

} 

網絡配置在eclipse中,如果我啓動spring引導應用程序,那麼應用程序爲此url提供映像http://localhost:8080///////images//profile//APM1184//originalImage_7a7zke527_.jpeg

如果我在本地tomcat 8中部署這個項目的war文件並啓動。這個網址並不是說404找不到。

我已經發布了我的代碼。請糾正我出錯的地方。

回答

0

擁有硬編碼的資源位置和mongo主機會讓你很難管理你的應用程序。我建議將這些值移動到配置文件中。同時,我建議使用相對或根目錄位置來獲取資源,而不是在路徑中使用C:\,因爲這對於部署到Linux或其他資源不在C:\上的環境不起作用。我的猜測是,由於Tomcat安裝上的某些安全限制,Tomcat不允許應用程序從該外部位置讀取數據。

我建議您閱讀本服務中的靜態內容的入門指南:https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot