宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見(jiàn)問(wèn)題
產(chǎn)品動(dòng)態(tài)
精選推薦

Spring Boot 2.x基礎(chǔ)教程:工程結(jié)構(gòu)推薦

管理 管理 編輯 刪除

Spring Boot框架本身并沒(méi)有對(duì)工程結(jié)構(gòu)有特別的要求,但是按照最佳實(shí)踐的工程結(jié)構(gòu)可以幫助我們減少可能會(huì)遇見(jiàn)的坑,尤其是Spring包掃描機(jī)制的存在,如果您使用最佳實(shí)踐的工程結(jié)構(gòu),可以免去不少特殊的配置工作。

典型示例

以下結(jié)構(gòu)是比較推薦的package組織方式:

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- web
      |  +- CustomerController.java
      |
  • root packagecom.example.myproject,所有的類(lèi)和其他package都在root package之下。
  • 應(yīng)用主類(lèi):Application.java,該類(lèi)直接位于root package下。通常我們會(huì)在應(yīng)用主類(lèi)中做一些框架配置掃描等配置,我們放在root package下可以幫助程序減少手工配置來(lái)加載到我們希望被Spring加載的內(nèi)容
  • com.example.myproject.domain包:用于定義實(shí)體映射關(guān)系與數(shù)據(jù)訪問(wèn)相關(guān)的接口和實(shí)現(xiàn)
  • com.example.myproject.service包:用于編寫(xiě)業(yè)務(wù)邏輯相關(guān)的接口與實(shí)現(xiàn)
  • com.example.myproject.web:用于編寫(xiě)Web層相關(guān)的實(shí)現(xiàn),比如:Spring MVC的Controller等

上面的結(jié)構(gòu)中,root package與應(yīng)用主類(lèi)的位置是整個(gè)結(jié)構(gòu)的關(guān)鍵。由于應(yīng)用主類(lèi)在root package中,所以按照上面的規(guī)則定義的所有其他類(lèi)都處于root package下的其他子包之后。默認(rèn)情況下,Spring Boot的應(yīng)用主類(lèi)會(huì)自動(dòng)掃描root package以及所有子包下的所有類(lèi)來(lái)進(jìn)行初始化。

什么意思呢?舉個(gè)例子,假設(shè)我們將com.example.myproject.web包與上面所述的root packagecom.example.myproject放在同一級(jí),像下面這樣:

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
    +- web
    |  +- CustomerController.java
    |

這個(gè)時(shí)候,應(yīng)用主類(lèi)Application.java在默認(rèn)情況下就無(wú)法掃描到com.example.myproject.web中的Controller定義,就無(wú)法初始化Controller中定義的接口。

非典型結(jié)構(gòu)下的初始化

那么如果,我們一定要加載非root package下的內(nèi)容怎么辦呢?

方法一:使用@ComponentScan注解指定具體的加載包,比如:

@SpringBootApplication
@ComponentScan(basePackages="com.example")
public class Bootstrap {

    public static void main(String[] args) {
        SpringApplication.run(Bootstrap.class, args);
    }

}

這種方法通過(guò)注解直接指定要掃描的包,比較直觀。如果有這樣的需求也是可以用的,但是原則上還是推薦以上面的典型結(jié)構(gòu)來(lái)定義,這樣也可以少寫(xiě)一些注解,代碼更加簡(jiǎn)潔。

方法二:使用@Bean注解來(lái)初始化,比如:

@SpringBootApplication
public class Bootstrap {

    public static void main(String[] args) {
        SpringApplication.run(Bootstrap.class, args);
    }

    @Bean
    public CustomerController customerController() {
        return new CustomerController();
    }

}

這種方法在業(yè)務(wù)開(kāi)發(fā)的時(shí)候并不是特別推薦,更適合用于框架封裝等場(chǎng)景,關(guān)于更多封裝上的技巧,后面我們?cè)谶M(jìn)階教程中詳細(xì)講解。

注:本文轉(zhuǎn)載自“程序猿DD”,如有侵權(quán),請(qǐng)聯(lián)系刪除!

請(qǐng)登錄后查看

哈哈哈醬 最后編輯于2024-12-18 15:07:33

快捷回復(fù)
回復(fù)
回復(fù)
回復(fù)({{post_count}}) {{!is_user ? '我的回復(fù)' :'全部回復(fù)'}}
排序 默認(rèn)正序 回復(fù)倒序 點(diǎn)贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無(wú)簡(jiǎn)介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復(fù) {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)
查看更多
打賞
已打賞¥{{reward_price}}
1059
{{like_count}}
{{collect_count}}
添加回復(fù) ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見(jiàn)問(wèn)題 產(chǎn)品動(dòng)態(tài) 精選推薦 首頁(yè)頭條 首頁(yè)動(dòng)態(tài) 首頁(yè)推薦
取 消 確 定
回復(fù)
回復(fù)
問(wèn)題:
問(wèn)題自動(dòng)獲取的帖子內(nèi)容,不準(zhǔn)確時(shí)需要手動(dòng)修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當(dāng)前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請(qǐng)輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認(rèn)打賞

微信登錄/注冊(cè)

切換手機(jī)號(hào)登錄

{{ bind_phone ? '綁定手機(jī)' : '手機(jī)登錄'}}

{{codeText}}
切換微信登錄/注冊(cè)
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開(kāi)源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服