Geliştirme aşamasında, gömülü tomcat'i geliştirme için kullanmanızı öneriyoruz, çünkü çok daha uygun olacak, ancak üretim ortamı için ayrı bir tomcat konteynerinde çalışmayı umuyorum, çünkü tomcat'e ek optimizasyonlar yapmamız gerekiyor, sonra projeyi değiştirmemiz gerekiyor Serbest bırakılmak üzere savaş paketine paketlenmiştir.
1. Projenin paketleme yöntemi savaş
2. Spring-boot-starter-tomcat'in kapsamını sağlanan olarak ayarlayın
Sağlanan olarak ayarlamak, ayrı bir tomcat'ta çalıştırılmasına gerek olmadığı için paketin paketleme sırasında hariç tutulacağı anlamına gelir.
< bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-tomcat < / artifactId > < dürbün > sağlanan < /dürbün > < /bağımlılık >Springboot'u bağımlılık aktarımı ile yapılandırdığımız için, yukarıdaki yapılandırmanın orijinal projede yapılandırılmadığı görülmüştür, bu nedenle yukarıdaki yapılandırma otomatik olarak eklenir ve bağımlılık aktarımını geçersiz kılan yapılandırmayı manuel olarak yapılandırmamız gerekir:
3. Kodu değiştirin ve başlangıç yapılandırmasını ayarlayın
SpringBootServletInitializer'ı miras almanız ve ardından Spring Boot'un giriş sınıfını ayarlamak için configure betiğini yeniden yazmanız gerekir.
paket cn.qlq.config; javax.sql.DataSource'u içe aktarın; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.builder.SpringApplicationBuilder; ithalat org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; org.springframework.context.annotation.Configuration dosyasını içe aktarın; import org.springframework.context.annotation.PropertySource; import com.jolbox.bonecp.BoneCPDataSource; / ** * Bağımsız bir Tomcat'te yayınlama, SpringBootServletInitializer sınıfını miras almalı ve yapılandırma yöntemini geçersiz kılmalıdır * / @Configuration // Sınıfın bir xml dosyasına eşdeğer olan bir Spring konfigürasyonu olduğunu belirtmek için bu açıklamayı kullanın @ComponentScan (basePackages = "cn.qlq") // Tarama paketini yapılandırın @PropertySource (value = {"sınıf yolu: db.properties"}, ignoreResourceNotFound = true) public class SpringConfig, SpringBootServletInitializer { @Value ("$ {jdbc.url}") özel String jdbcUrl; @Value ("$ {jdbc.driverClassName}") özel String jdbcDriverClassName; @Value ("$ {jdbc.username}") private String jdbcUsername; @Value ("$ {jdbc.password}") private String jdbcPassword; @Bean (destroyMethod = "kapat") public DataSource dataSource () { BoneCPDataSource boneCPDataSource = new BoneCPDataSource (); // veritabanı sürücüsü boneCPDataSource.setDriverClass (jdbcDriverClassName); // karşılık gelen sürücü jdbcUrl boneCPDataSource.setJdbcUrl (jdbcUrl); // Veritabanının kullanıcı adı boneCPDataSource.setUsername (jdbcUsername); // Veritabanı şifresi boneCPDataSource.setPassword (jdbcPassword); // Veritabanı bağlantı havuzundaki boş bağlantıların aralığını kontrol edin, birim dakikadır, varsayılan değer: 240, iptal etmek istiyorsanız, 0 olarak ayarlayın boneCPDataSource.setIdleConnectionTestPeriodInMinutes (60); // Bağlantı havuzundaki kullanılmayan bağlantıların maksimum hayatta kalma süresi, birim dakikadır, varsayılan değer: 60, sonsuza kadar yaşamak istiyorsanız, 0 olarak ayarlayın boneCPDataSource.setIdleMaxAgeInMinutes (30); // Bölüm başına maksimum bağlantı sayısı boneCPDataSource.setMaxConnectionsPerPartition (100); // Bölüm başına en az bağlantı sayısı boneCPDataSource.setMinConnectionsPerPartition (5); boneCPDataSource döndür; } @Override korumalı SpringApplicationBuilder yapılandırması (SpringApplicationBuilder oluşturucu) { // Bağımsız tomcat işleminin girişi için başlangıç sınıfını ayarlayın dönüş oluşturucu.sources (SpringConfig.class); } }4. Hit savaş paketi:
Başarıyla paketlendi:
5. tomcat'e dağıtın
(1) Savaş paketini web uygulamaları altındaki ROOT dizinine çıkartın (orijinal ROOT klasörünün altındaki şeyleri silin), başlayın:
WEB-INF'in altında Web.xml yok
Açıklama: Yukarıdaki sıkıştırılmış dosyada web.xml yoktur, ancak yine de başlatılabilir. SpringConfig, SpringBootServletInitializer'ı miras aldığından, yaylı önyükleme, paketlerken bir dizi başlatma çalışması yapar (yukarıdaki org klasörü gibi).
(2) Testi başlat:
(1) Yazılan savaş paketini Tomcat kurulum dizininin altındaki webapps dizinine kopyalayın ve savaş paketini SSM.war olarak yeniden adlandırın ve Tomcat'i başlatın (savaş paketi Tomcat başladığında otomatik olarak taranacak ve sıkıştırılmış olacaktır)
(2) Testi başlat:
Not:
Springboot proje yöntemi, Eclipse dışa aktarımının savaş paketine dışa aktarılması ve ardından tomcat'e dağıtılması için kullanılmasını desteklemez çünkü bu tür Eclipse Dışa Aktarma, springboot tarafından yapılan başlatma işini taşımaz. Paketlenmiş şeyler aşağıdaki gibidir: