欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

搭建一個基礎(chǔ)的Resty項目框架

 更新時間:2022年03月07日 14:19:43   作者:gitbooks  
這篇文章主要為大家介紹了如何搭建一個基礎(chǔ)的Resty項目框架示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

一個Resty項目包含的部分(resty-route):

1. RestFilter

像其他web框架一樣,Resty也需要一個入口,在web.xml里配置,和常規(guī)的Filter區(qū)別不大

  <filter>
    <filter-name>RestyFilter</filter-name>
    <filter-class>cn.dreampie.route.RestyFilter</filter-class>
    <init-param>
      <param-name>exclusions</param-name>
      <!--把不經(jīng)過Resty過濾的文件或者目錄配置在這兒,逗號分割-->
      <param-value>/**/*.js,/**/*.gif,/**/*.jpg,/**/*.png,/**/*.css,/**/*.ico,/druid/**</param-value>
    </init-param>
    <init-param>
      <!--Resty的核心配置文件,看第2點-->
      <param-name>configClass</param-name>
      <param-value>cn.dreampie.config.AppConfig</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>RestyFilter</filter-name>
    <!--過濾的路徑-->
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2. Config

Resty的核心配置文件,你需要自己編寫一個Config的java文件,并繼承Config類,參考如下,根據(jù)自己的實際情況選擇配置

public class AppConfig extends Config {
  /**
   * Config constant
   * 配置常量,目前只能配置render,其他全局配置會自動讀取根目錄下的application.properties文件
   */
  public void configConstant(ConstantLoader constantLoader) {
    //通過后綴來返回不同的數(shù)據(jù)類型  你可以自定義自己的 render
    //如:public class FreemarkerRender extends Render{}
    //目前支持json,text,file三種輸出
    //constantLoader.addRender("ftl", new FreemarkerRender());
  }
  /**
   * Config resource
   * 配置Resource的掃描目錄
   */
  public void configResource(ResourceLoader resourceLoader) {
    //設(shè)置resource的目錄 Resty啟動時通過掃描配置的目錄來添加Resouce
    //排除某個目錄
    //resourceLoader.addExcludePackages("cn.dreampie.resource");
    //掃描某個目錄
    resourceLoader.addIncludePackages("cn.dreampie.resource");
  }
  /**
   * Config plugin
   * 配置插件 數(shù)據(jù)庫相關(guān)配置信息和constant一樣  都會自動讀取application.properties文件
   */
  public void configPlugin(PluginLoader pluginLoader) {
    //第一個數(shù)據(jù)源 使用c3p0連接池,數(shù)據(jù)源名字 default
    //C3p0DataSourceProvider cdsp = new C3p0DataSourceProvider("default");
    //activerecord 初始化會從數(shù)據(jù)庫獲取表的元數(shù)據(jù) 并映射到class
    //ActiveRecordPlugin activeRecordCdsp = new ActiveRecordPlugin(cdsp, true);
    //排除的model目錄
    //activeRecordCdsp.addExcludePackages("cn.dreampie.orm");
    //掃描的model目錄
    //activeRecordCdsp.addIncludePackages("cn.dreampie.orm");
    //pluginLoader.add(activeRecordCdsp);
    //第二個數(shù)據(jù)源 使用druid連接池 數(shù)據(jù)源名字 demo
    //DruidDataSourceProvider ddsp = new DruidDataSourceProvider("demo");
    //ActiveRecordPlugin activeRecordDdsp = new ActiveRecordPlugin(ddsp, true);
    //pluginLoader.add(activeRecordDdsp);
    //jndi數(shù)據(jù)源 數(shù)據(jù)源名字jndiDs
    //JndiDataSourceProvider jdsp=new JndiDataSourceProvider("jndiDs","jndiName");
    //ActiveRecordPlugin activeRecordJdsp = new ActiveRecordPlugin(ddsp, true);
    //pluginLoader.add(activeRecordJdsp);
  }
  /**
   * Config interceptor applied to all actions.
   * 全局?jǐn)r截,會在進(jìn)入路由后,執(zhí)行方法前執(zhí)前 
   */
  public void configInterceptor(InterceptorLoader interceptorLoader) {
    //權(quán)限攔截器
    //interceptorLoader.add(new SecurityInterceptor(2, new MyAuthenticateService()));
    //Resource層事務(wù)的攔截器 @Transaction
    //interceptorLoader.add(new TransactionInterceptor());
  }
  /**
   * Config handler
   * 全局的攔截,會在進(jìn)入路由前執(zhí)行
   */
  public void configHandler(HandlerLoader handlerLoader) {
    //跨域
    handlerLoader.add(new CORSHandler());
  }
  /**
   * Call back after Resty start
   */
  public void afterStart() {
    //Resty啟動前執(zhí)行的操作
  }
  /**
   * Call back before Resty stop
   */
  public void beforeStop() {
    //Resty停止前執(zhí)行的操作
  }

3. resources

application.properties 系統(tǒng)全局的配置信息

#not must auto load
app.encoding=UTF-8
app.devMode=true
app.showRoute=false
app.cacheEnabled=true
app.cacheManager=cn.dreampie.cache.redis.RedisCacheManager
##druid plugin auto load
db.default.url=jdbc:mysql://127.0.0.1/example?useUnicode=true&characterEncoding=UTF-8
db.default.user=dev
db.default.password=dev1010
db.default.dialect=mysql
#c3p0配置
c3p0.default.minPoolSize=3
c3p0.default.maxPoolSize=20
#druid配置
#druid.default.initialSize=10
#druid.default.maxPoolPreparedStatementPerConnectionSize=20
#druid.default.timeBetweenConnectErrorMillis=1000
#druid.default.filters=slf4j,stat,wall
#flyway database migration auto load
flyway.default.valid.clean=true
flyway.default.migration.auto=true
flyway.default.migration.initOnMigrate=true
db.demo.url=jdbc:mysql://127.0.0.1/demo?useUnicode=true&characterEncoding=UTF-8
db.demo.user=dev
db.demo.password=dev1010
db.demo.dialect=mysql
#druid
druid.demo.initialSize=10
druid.demo.maxPoolPreparedStatementPerConnectionSize=20
druid.demo.timeBetweenConnectErrorMillis=1000
druid.demo.filters=slf4j,stat,wall
#flyway
flyway.demo.valid.clean=true
flyway.demo.migration.auto=true
flyway.demo.migration.initOnMigrate=true

4. 編寫一個Resource

如果我們需要在url中體現(xiàn)版本推薦首先創(chuàng)建一個ApiResource的基礎(chǔ)Resource的java類

/**
 * 通過@API 來知道api的url,如果子對象也使用了@API注解,他們的url會拼接
 */
@API("/api/v1.0")
public class ApiResource extends Resource {
  /**
   * 基礎(chǔ)的api Resource 用來添加基礎(chǔ)的路徑或版本號 和一些公用方法
   */
}
/**
 *上面說到@API會被拼接,那么TestResource的api就是 /api/v1.0/tests
 */
@API("/tests")
public class TestResource extends ApiResource {
  /**
   * @GET 沒有指定url時,訪問改方法的api為 GET /api/v1.0/tests
   */
  @GET
  public WebResult get() {
    //如果需要返回請求狀態(tài)  使用new WebResult
    return new WebResult(HttpStatus.OK, Maper.of("a", "1", "b", "2"));
  }
  /**
   * @GET("/:name") 或 @GET("/{name}") 來設(shè)置url參數(shù)
   */
  @GET("/:name")
  public WebResult get(String name) {
    //如果需要返回請求狀態(tài)  使用new WebResult
    return new WebResult(HttpStatus.OK, Maper.of("a", "1", "b", "2"));
  }
  /**
   * 訪問改方法的api為 POST /api/v1.0/tests/post
   * 傳入?yún)?shù)時 test=j(luò)son字符串
   */
  @POST("/post")
  public Map post(Map<String, String> test) {
    return test;
  }
}

以上就是搭建一個基礎(chǔ)的Resty項目框架的詳細(xì)內(nèi)容,更多關(guān)于搭建Resty項目框架的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot部署在Weblogic的操作步驟

    SpringBoot部署在Weblogic的操作步驟

    這篇文章主要介紹了SpringBoot部署在Weblogic的操作步驟,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java吃貨聯(lián)盟訂餐系統(tǒng)代碼實例

    Java吃貨聯(lián)盟訂餐系統(tǒng)代碼實例

    這篇文章主要介紹了Java訂餐系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 在Spring中利用@Order注解對bean和依賴進(jìn)行排序

    在Spring中利用@Order注解對bean和依賴進(jìn)行排序

    在Spring框架中,@Order是一個經(jīng)常被忽視但非常重要的注解,在項目開發(fā)中,當(dāng)我們需要維護(hù)bean的特定順序或者存在許多相同類型的bean時,這個注解就發(fā)揮了作用,這篇文章講的就是如何利用@Order注解對bean和依賴進(jìn)行排序,需要的朋友可以參考下
    2023-11-11
  • Java表格JTable代碼實例解析

    Java表格JTable代碼實例解析

    這篇文章主要介紹了Java表格JTable代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java應(yīng)用/JVM宕機(jī)排查步驟操作

    Java應(yīng)用/JVM宕機(jī)排查步驟操作

    這篇文章主要介紹了Java應(yīng)用/JVM宕機(jī)排查步驟操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • jdk7 中HashMap的知識點總結(jié)

    jdk7 中HashMap的知識點總結(jié)

    HashMap的原理是老生常談了,不作仔細(xì)解說。一句話概括為HashMap是一個散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。這篇文章主要總結(jié)了關(guān)于jdk7 中HashMap的知識點,需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • springboot使用Hutool的JschUtil及下載安裝步驟

    springboot使用Hutool的JschUtil及下載安裝步驟

    這篇文章主要為大家介紹了springboot使用Hutool的JschUtil的方法及下載安裝詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • java核心編程之文件過濾類FileFilter和FilenameFilter

    java核心編程之文件過濾類FileFilter和FilenameFilter

    這篇文章主要為大家詳細(xì)介紹了java文件過濾類FileFilter和FilenameFilter,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • java 獲取日期的幾天前,幾個月前和幾年前的實例

    java 獲取日期的幾天前,幾個月前和幾年前的實例

    下面小編就為大家?guī)硪黄猨ava 獲取日期的幾天前,幾個月前和幾年前的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Hbase、elasticsearch整合中jar包沖突的問題解決

    Hbase、elasticsearch整合中jar包沖突的問題解決

    本篇文章主要介紹了Hbase、elasticsearch整合中jar包沖突的問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論