Spring Boot + Mybatis çoklu modül (modül) projesi tam inşaat eğitimi

  • I.Giriş
  • 1. Geliştirme araçları ve sistem ortamı
  • 2. Proje dizin yapısı
  • 2. İnşaat adımları
  • 1. Bir ana proje oluşturun
  • 2. Bir alt modül oluşturun
  • 3. Projeyi çalıştırın
  • 4. Modüller arasında bağımlılıkları yapılandırın
  • 5. Web katmanı biz katmanı arayüz testini çağırır
  • 6. Mybatis'i entegre edin
  • Dört, özet
  • Beş, belirtilmemiş çukur

I.Giriş

Son zamanlarda, şirketin projesi yeniden düzenlemeye başlamak üzere ve çerçeve SpringBoot + Mybatis olarak seçildi Bu makale temel olarak IDEA'da bir SpringBoot çok modüllü proje oluşturma sürecini anlatıyor.

1. Geliştirme araçları ve sistem ortamı

  • IDE: IntelliJ IDEA 2018.2
  • Sistem ortamı: mac OSX

2. Proje dizin yapısı

  • biz katmanı: iş mantığı katmanı
  • Dao katmanı: veri kalıcılığı katmanı
  • web katmanı: istek işleme katmanı

2. İnşaat adımları

1. Bir ana proje oluşturun

IDEA araç çubuğu seçim menüsü Dosya- > Yeni- > Proje ...

img

Spring Initializr'ı seçin, Initializr varsayılan olarak Default'a ayarlıdır, Next'e tıklayın

img

Giriş kutusunu doldurun ve İleri'ye tıklayın

img

Bu adımın doğrudan İleri'yi seçmesine gerek yoktur

img

Projeyi oluşturmak için Bitir'e tıklayın

img

Nihai proje dizin yapısı aşağıdaki gibidir

img

Yararsız .mvn dizinini, src dizinini, mvnw ve mvnw.cmd dosyalarını silin, sonunda yalnızca .gitignore ve pom.xml bırakın

img

2. Bir alt modül oluşturun

Menüyü çağırmak için proje kök dizini beta'ya sağ tıklayın, Yeni'yi seçin > Modül

img

Maven'i seçin, İleri'ye tıklayın

img

ArifactId'yi doldurun, İleri'ye tıklayın

img

Modül adını değiştirin ve okunabilirliği artırmak için yatay çubuklar ekleyin, Bitir'e tıklayın

img

Aynı şekilde, [beta-dao] ve [beta-web] alt modülleri ekleyin ve son olarak, aşağıda gösterildiği gibi proje dizin yapısını alın

img

3. Projeyi çalıştırın

Beta-web katmanında com.yibao.beta.web paketini oluşturun (not: bu çok katmanlı bir dizin yapısıdır, tek bir dizin adı değil, com > > Yibao > > beta > > web) ve BetaWebApplication.java giriş sınıfını ekleyin

paket com.yibao.beta.web; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; / ** * @ yazar linjian * @date 2018/9/29 * / @SpringBootApplication genel sınıf BetaWebApplication { public static void main (String args) { SpringApplication.run (BetaWebApplication.class, args); } }

com.yibao.beta.web paketine kontrolör dizinini ekleyin ve yeni bir kontrolör oluşturun, arayüze normal olarak erişilip erişilemeyeceğini test etmek için test yöntemini ekleyin

paket com.yibao.beta.web.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; / ** * @ yazar linjian * @date 2018/9/29 * / @Filmdenkare @RequestMapping ("demo") public class DemoController { @GetMapping ("test") public String testi () { "Merhaba Dünya!" } }

Projeyi başlatmak için BetaWebApplication sınıfındaki ana yöntemi çalıştırın, varsayılan bağlantı noktası 8080'dir, aşağıdaki sonuçları almak için http: // localhost: 8080 / demo / test adresini ziyaret edin

img

Yukarıdaki projeler normal olarak başlatılabilse de modüller arasındaki bağımlılıklar henüz eklenmemiştir, aşağıda iyileştirmeye devam edin

4. Modüller arasında bağımlılıkları yapılandırın

Her alt modülün bağımlılığı: biz katmanı dao katmanına bağlıdır, web katmanı biz katmanına bağlıdır

Ana pom dosyasındaki tüm alt modül bağımlılıklarını bildirin (bağımlılık yönetimi ve bağımlılıklar arasındaki fark için belgelere bakın)

< bağımlılık yönetimi > < bağımlılıklar > < bağımlılık > < Grup kimliği > com.yibao.beta < /Grup kimliği > < artifactId > beta-biz < / artifactId > < versiyon > $ {beta.version} < / version > < /bağımlılık > < bağımlılık > < Grup kimliği > com.yibao.beta < /Grup kimliği > < artifactId > beta-dao < / artifactId > < versiyon > $ {beta.version} < / version > < /bağımlılık > < bağımlılık > < Grup kimliği > com.yibao.beta < /Grup kimliği > < artifactId > beta-web < / artifactId > < versiyon > $ {beta.version} < / version > < /bağımlılık > < / bağımlılıklar > < / dependencyManagement >

$ {Beta.version}, özellikler etiketinde tanımlandığında

Beta web katmanındaki pom dosyasına beta-biz bağımlılığı ekleyin

< bağımlılıklar > < bağımlılık > < Grup kimliği > com.yibao.beta < /Grup kimliği > < artifactId > beta-biz < / artifactId > < /bağımlılık > < / bağımlılıklar >

Beta-biz katmanındaki pom dosyasına beta-dao bağımlılığı ekleyin

< bağımlılıklar > < bağımlılık > < Grup kimliği > com.yibao.beta < /Grup kimliği > < artifactId > beta-dao < / artifactId > < /bağımlılık > < / bağımlılıklar >

5. Web katmanı biz katmanı arayüz testini çağırır

Beta-biz katmanında com.yibao.beta.biz paketini oluşturun, servis dizinini ekleyin ve içinde DemoService arayüz sınıfını oluşturun

paket com.yibao.beta.biz.service; / ** * @ yazar linjian * @date 2018/9/29 * / genel arayüz DemoService { Dize testi (); } paket com.yibao.beta.biz.service.impl; import com.yibao.beta.biz.service.DemoService; import org.springframework.stereotype.Service; / ** * @ yazar linjian * @date 2018/9/29 * / @Hizmet public class DemoServiceImpl, DemoService { @Override public String testi () { "test" iadesi; } }

DemoController, DemoService'i @Autowired ek açıklaması aracılığıyla enjekte eder ve DemoController test yöntemini DemoService test yöntemini çağıracak şekilde değiştirir. Nihai sonuç aşağıdaki gibidir.

paket com.yibao.beta.web.controller; import com.yibao.beta.biz.service.DemoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; / ** * @ yazar linjian * @date 2018/9/29 * / @Filmdenkare @RequestMapping ("demo") public class DemoController { @Autowired özel DemoService demoService; @GetMapping ("test") public String testi () { dönüş demoService.test (); } }

Projeyi yeniden başlatmak için BetaWebApplication sınıfındaki ana yöntemi çalıştırın ve aşağıdaki hatayı bulun

*************************** BAŞVURU BAŞLATILAMADI *************************** Açıklama: Com.yibao.beta.web.controller.DemoController'daki demoService alanı, bulunamayan 'com.yibao.beta.biz.service.DemoService' türünde bir bean gerektiriyordu. Aksiyon: Yapılandırmanızda 'com.yibao.beta.biz.service.DemoService' türünde bir bean tanımlamayı düşünün.

Bunun nedeni, DemoService sınıfının bulunamamasıdır. Şu anda, paket taramanın BetaWebApplication giriş sınıfına eklenmesi gerekir ve @SpringBootApplication ek açıklamasındaki scanBasePackages değeri, sonunda gösterildiği gibi com.yibao.beta olarak ayarlanır.

paket com.yibao.beta.web; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; / ** * @ yazar linjian * @date 2018/9/29 * / @SpringBootApplication (scanBasePackages = "com.yibao.beta") @MapperScan ("com.yibao.beta.dao.mapper") genel sınıf BetaWebApplication { public static void main (String args) { SpringApplication.run (BetaWebApplication.class, args); } }

Ayarladıktan sonra ana yöntemi yeniden çalıştırın, proje normal şekilde başlar, aşağıdaki etkiyi elde etmek için http: // localhost: 8080 / demo / test adresini ziyaret edin

img

6. Mybatis'i entegre edin

mybatis-spring-boot-starter ve lombok bağımlılıklarını ana pom dosyasında bildirin

bağımlılık yönetimi > < bağımlılıklar > < bağımlılık > < Grup kimliği > org.mybatis.spring.boot < /Grup kimliği > < artifactId > mybatis-spring-boot-starter < / artifactId > < versiyon > 1.3.2 < / version > < /bağımlılık > < bağımlılık > < Grup kimliği > org.projectlombok < /Grup kimliği > < artifactId > Lombok < / artifactId > < versiyon > 1.16.22 < / version > < /bağımlılık > < / bağımlılıklar > < / dependencyManagement >

Yukarıdaki bağımlılıkları beta-dao katmanındaki pom dosyasına ekleyin

< bağımlılıklar > < bağımlılık > < Grup kimliği > org.mybatis.spring.boot < /Grup kimliği > < artifactId > mybatis-spring-boot-starter < / artifactId > < /bağımlılık > < bağımlılık > < Grup kimliği > mysql < /Grup kimliği > < artifactId > mysql-bağlayıcı-java < / artifactId > < /bağımlılık > < bağımlılık > < Grup kimliği > org.projectlombok < /Grup kimliği > < artifactId > Lombok < / artifactId > < /bağımlılık > < / bağımlılıklar >

Beta-dao katmanında com.yibao.beta.dao paketini oluşturun ve dao katmanıyla ilgili dosyaları (DO, Mapper, xml) oluşturmak için mybatis-genertaor aracını kullanın ve depolama dizini aşağıdaki gibidir

img

jdbc ve mybatis ile ilgili yapılandırma öğelerini application.properties dosyasına ekleyin

spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.url = jdbc: mysql: //192.168.1.1/test? useUnicode = truecharacterEncoding = utf-8 spring.datasource.username = test spring.datasource.password = 123456 mybatis.mapper-locations = sınıf yolu: mybatis / *. xml mybatis.type-aliases-package = com.yibao.beta.dao.entity

DemoService, UserMapper'ı @Autowired ek açıklaması aracılığıyla enjekte eder ve sonunda gösterildiği gibi, UserMapper'ın selectByPrimaryKey yöntemini çağırmak için DemoService test yöntemini değiştirir.

paket com.yibao.beta.biz.service.impl;

import com.yibao.beta.biz.service.DemoService;

import com.yibao.beta.dao.entity.UserDO;

import com.yibao.beta.dao.mapper.UserMapper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

/ **

* @ yazar linjian

* @date 2018/9/29

* /

@Hizmet

public class DemoServiceImpl, DemoService {

@Autowired

özel UserMapper userMapper;

@Override

public String testi () {

UserDO user = userMapper.selectByPrimaryKey (1);

return user.toString ();

}

}

Projeyi yeniden başlatmak için BetaWebApplication sınıfındaki ana yöntemi çalıştırın ve aşağıdaki hatayı bulun

BAŞVURU BAŞLATILAMADI *************************** Açıklama: Com.yibao.beta.biz.service.impl.DemoServiceImpl'deki userMapper alanı, bulunamadı 'com.yibao.beta.dao.mapper.UserMapper' türünde bir bean gerektiriyordu. Aksiyon: Yapılandırmanızda 'com.yibao.beta.dao.mapper.UserMapper' türünde bir bean tanımlamayı düşünün.

Nedeni, UserMapper sınıfının bulunamamasıdır. Şu anda, BetaWebApplication giriş sınıfına dao katman paketi taramasını eklemeniz, @MapperScan ek açıklamasını eklemeniz ve değerini com.yibao.beta.dao.mapper olarak ayarlamanız ve son olarak aşağıdaki gibi bakmanız gerekir.

paket com.yibao.beta.web; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; / ** * @ yazar linjian * @date 2018/9/29 * / @SpringBootApplication (scanBasePackages = "com.yibao.beta") @MapperScan ("com.yibao.beta.dao.mapper") genel sınıf BetaWebApplication { public static void main (String args) { SpringApplication.run (BetaWebApplication.class, args); } }

Ayarladıktan sonra ana yöntemi yeniden çalıştırın, proje normal şekilde başlar, aşağıdaki etkiyi elde etmek için http: // localhost: 8080 / demo / test adresini ziyaret edin

img

Şimdiye kadar, basit bir SpringBoot + Mybatis çoklu modül projesi oluşturuldu ve ayrıca proje çağrısı arayüzünü başlatarak doğruluğunu onaylıyoruz.

Dört, özet

İyi tanımlanmış çok modüllü mühendislik yapısı yalnızca bakım için uygun olmakla kalmaz, aynı zamanda sonraki mikro hizmetler için de elverişlidir. Bu yapının temelinde, ortak katman (genel bileşenler) ve sunucu katmanı (dubbo tarafından sağlanan hizmetler gibi) da genişletilebilir.

Bu, projenin yeniden yapılandırılmasının ilk adımıdır ve logback, disconf, redis, dubbo ve diğer bileşenler gelecekte çerçeveye entegre edilecektir.

Beş, belirtilmemiş çukur

İnşaat sürecinde, maven özel sunucusunda da bir sorunla karşılaştım. Bunun nedeni, şirketin dahili maven özel sunucusu tarafından yapılandırılan merkezi ambarın Alinin uzak deposu olmasıdır. Maven ile gelen uzak depoya kıyasla, bazı jar paketi sürümleri tamamlanmamıştır, bu da derlemeye yol açar İşlem sırasında birkaç kez, ilgili kavanoz paketi çekilmediği için proje başlatılamadı.

Kaynak:

:-D WeChat Kimliği Arama (ID: Taro kaynak kodu ), çeşitli Java kaynak kodu analizi, ilke açıklaması, mülakat soruları ve çalışma kılavuzları edinebilirsiniz.

:-D Ve yanıtla [ kitabın Bundan sonra, yazarın önerdiği mimariye girişten başlayarak 100 adet Java kitabı alabilirsiniz.

:-D Ve yanıtla [ Teknoloji Grubu ] Bundan sonra, Java, arka uç ve mimariyi tartışmaya adanmış bir teknoloji grubuna katılabilirsiniz.

Hadi, Sao Nian ~

"Sağlıklı" Eğer çok sinirlenirsen zehirlenir misin?
önceki
Çalışan, fazla mesai için pek mutlu olmadığı için işten çıkarıldı. Ertesi gün patron: tutumunuzla ilgili bir sorununuz var
Sonraki
Kendinizi şiddetli yağmurun neden olduğu selden nasıl kurtarırsınız?
America's Cup | Öne Çıkanlar: Gareka'da Peru'nun "kimlik kartı" Cueva, "Talisman" oyun kartını yeniliyor
Yıllık maaşı 450.000 olan Alibaba programcıları vivo'ya geçmek istiyor, netizenler: Maaşları iki katına çıkmadıysa gitmeyin
Ağır! Amiral Guangshen Dongguan dört bilim şehrine yükselecek İnci Nehri'nin batı yakası doğu kıyısı ile nasıl koşacak?
Tian Hairong Valentino Paris Couture Show, çiçeklerin gücünün dünyayı değiştirebileceğine inanıyor
Kadınlar Dünya Kupası İngiltere koçu: Üçüncü bitirmek canımı yakıyor ama yine de kazanmak zorunda
618 cep telefonu savaşı sona erdi: cep telefonu pazarı "toparlandı", Huawei kazanan olarak zafer kazandı
Guangdong, Fujian ve Jiangxi'nin üç eyaletinden gönüllüler, Chaoshan'daki yaşlıların akrabalarını bulmak için Shan'da toplandı
Veritabanı alt veritabanı alt tablo fikirleri
Programcı, kodu WeChat mesajlarına otomatik olarak cevap verecek bir robot yazmak için kullandı ve ertesi gün WeChat'i açtı.
Taicang: İnovasyon şehrin yeni ivmesine öncülük ediyor
Ayrıca bakınız Siyah Teknoloji, evcil hayvan tanıma hakkında ne kadar bilginiz var?
To Top