日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
micro-mvc框架支持mvc各層業(yè)務(wù)代碼熱部署

micro-mvc框架,可以與springmvc和springcloud整合,使所有的controller、servicebean、dao和sql業(yè)務(wù)邏輯代碼都支持熱部署方便開發(fā)人員調(diào)式和生產(chǎn)部署。
源碼與demo地址:https://github.com/jeffreyning/micro-mvc

創(chuàng)新互聯(lián)擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊,在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10年,專業(yè)且經(jīng)驗豐富。10年網(wǎng)站優(yōu)化營銷經(jīng)驗,我們已為1000多家中小企業(yè)提供了網(wǎng)站制作、成都網(wǎng)站建設(shè)解決方案,按需網(wǎng)站制作,設(shè)計滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!

與springmvc整合過程

編寫Controller接口

整合后Springmvc的controller只編寫接口,參數(shù)名稱必須用RequestParam注解。
使用InjectGroovy注解在接口中聲明對應(yīng)的groovy實現(xiàn)名稱。
其他與傳統(tǒng)springmvc的controller無異。

package foo.web;

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.nh.micro.service.InjectGroovy;

@Controller
@RequestMapping("test")
@InjectGroovy(name="TestController")
public interface TestController {
@RequestMapping("echo")
@ResponseBody
public  Map echo(@RequestParam(value="str") String str,HttpServletRequest httpRequest);

}

編寫Controller層的實現(xiàn)groovy

package groovy;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import com.nh.micro.rule.engine.core.plugin.MicroAop;
import com.nh.micro.rule.engine.core.plugin.MicroDefaultLogProxy;
import com.nh.micro.service.InjectGroovy;
import com.nh.micro.template.MicroDbProxy;
import com.nh.micro.template.MicroTMProxy;

import foo.service.TestService;

@MicroAop(name=[MicroDefaultLogProxy.class,MicroTMProxy.class,MicroDbProxy.class], property=["","",""])
class TestController  {  
    @Resource
    public TestService testService;

    public Map echo(String str,HttpServletRequest httpRequest) {
        System.out.println("this is controller proxy");
        testService.test("111");
        Map retMap=new HashMap();
        retMap.put("status", "0");
        return retMap;
    }

}

配置controller層包掃描

使用GroovyBeanScannerConfigurer代替context:component-scan對controller進(jìn)行掃描。

    
        
    

Service層

編寫ServiceBean接口

并進(jìn)行包掃描,使controller層能夠是resource加載到ServiceBean代理對象。注意在接口中使用@InjectGroovy注解聲明對應(yīng)的實現(xiàn)業(yè)務(wù)邏輯的groovy文件名字
編寫ServiceBean接口

package foo.service;
import com.nh.micro.service.InjectGroovy;
@InjectGroovy(name="TestService")
public interface TestService {
    public void test(String id);
}

Service層groovy實現(xiàn)

package groovy.service;
import javax.annotation.Resource;
import foo.dao.TestDao;
import foo.dto.MicroTestDto;
import foo.repository.*;
import groovy.json.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.transaction.annotation.Transactional;
import com.nh.micro.dao.mapper.DefaultPageInfo;
import com.nh.micro.dao.mapper.InjectDao;
import com.nh.micro.rule.engine.core.plugin.MicroAop;
import com.nh.micro.rule.engine.core.plugin.MicroDefaultLogProxy;
import com.nh.micro.template.MicroDbProxy;
import com.nh.micro.template.MicroServiceTemplateSupport;
import com.nh.micro.template.MicroTMProxy;

@MicroAop(name=[MicroDefaultLogProxy.class,MicroTMProxy.class,MicroDbProxy.class], property=["","",""])
class TestService  {  

    @Resource
    public TestDao testDao;

    public void test(String id){

        Map paramMap=new HashMap();
        paramMap.put("id", id);
        MicroTestDto microTestDto=testDao.queryInfoById(paramMap);

        List list=testDao.getInfoListAllMapper(microTestDto, ""); 

        DefaultPageInfo pageInfo=new DefaultPageInfo();
        pageInfo.setPageNo(1);
        List retList=testDao.queryInfosByPage(paramMap, pageInfo);
        Long total=pageInfo.getTotal();
        System.out.println("total="+total);

    }

}

Service層包掃描配置

    
        
    

Dao層

使用micro-dao模塊,需要編寫dto類,dao接口和sql文件。通過掃描sql文件和dao接口,使service層能夠使用Resource注解加載dao代理對象。

編寫dto對象類

使用@MicroTableName映射數(shù)據(jù)中表名,使用@MicroMappingAnno映射表中列名。

package foo.dto;

import java.util.Date;
import com.nh.micro.orm.MicroMappingAnno;
import com.nh.micro.orm.MicroTableName;

@MicroTableName(name="micro_test")
public class MicroTestDto {
    @MicroMappingAnno(name="id")
    private String id;
    @MicroMappingAnno(name="meta_key")
    private String metaKey;
    @MicroMappingAnno(name="meta_name")
    private String metaName;
    @MicroMappingAnno(name="meta_type")
    private String metaType;
    @MicroMappingAnno(name="create_time")
    private Date createTime;

    @MicroMappingAnno(name="meta_num")
    private Integer metaNum;

    public Integer getMetaNum() {
        return metaNum;
    }

    public void setMetaNum(Integer metaNum) {
        this.metaNum = metaNum;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMetaKey() {
        return metaKey;
    }

    public void setMetaKey(String metaKey) {
        this.metaKey = metaKey;
    }

    public String getMetaName() {
        return metaName;
    }

    public void setMetaName(String metaName) {
        this.metaName = metaName;
    }

    public String getMetaType() {
        return metaType;
    }

    public void setMetaType(String metaType) {
        this.metaType = metaType;
    }
}

編寫Dao接口

package foo.dao;
import java.util.List;
import java.util.Map;
import com.nh.micro.dao.mapper.ListInnerClass;
import com.nh.micro.dao.mapper.MicroCommonMapper;
import com.nh.micro.dao.mapper.MicroPageInfo;
import com.nh.micro.orm.MicroDbName;
import foo.dto.MicroTestDto;

@MicroDbName
public interface TestDao extends MicroCommonMapper {
        public int updateInfo(Map paramMap);
        public int insertInfo(Map paramMap);
        @ListInnerClass(name=MicroTestDto.class)
    public List queryInfosByPage(Map paramMap,MicroPageInfo pageInfo);    
    public MicroTestDto queryInfoById(Map paramMap);    
}

Dao層包掃描配置

    
        
    

編寫sql模板

類似jsp的語法編寫sql,支持#和$兩種替換符。不必區(qū)分select還是update,統(tǒng)一用標(biāo)簽,id與dao接口方法名一致,sql文件名與dao接口名一致。

<%!  %>
select * from micro_test where 1=1 
<% if(paramArray[0].get("id")!=null){ %>        
    and id = #{paramArray[0].id}            
<%  } %>
<%!  %>

<%!  %>
select * from micro_test 
<%!  %>

<%!  %>
insert into micro_test(id,meta_key) values( 
?           
<% repList.add(paramArray[0].get("id"));%>
,?      
<% repList.add(paramArray[0].get("meta_key"));%>    
    )
<%!  %>

<%!  %>
update micro_test set  

<% if(paramArray[0].get("meta_key")!=null){%>
,meta_key=#{paramArray[0].get("meta_key")}  
<% } %> 
<% if(paramArray[0].get("meta_name")!=null){%>
,meta_name=#{paramArray[0].get("meta_name")}    
<% } %> 

where id=#{paramArray[0].get("id")}
<%!  %>

Sql文件掃描配置

    
    
        
            
                
                    
                    
                    
                    
                
            
        
    

MicroDao說明

同時支持MySQL和oracle
MicroDao相對mybatis的優(yōu)點:
1,sql腳本支持修改后熱部署實時生效。
2,bean與數(shù)據(jù)庫字段映射關(guān)系,通過注解設(shè)置到bean中,不必在sql腳本中體現(xiàn)。
3,sql腳本支持類似jsp的寫法,且不必區(qū)分select、update使用不同標(biāo)簽,更加靈活。
4,不需要使用插件,內(nèi)置支持物理分頁。
5,不需要使用插件,內(nèi)置支持針對bean的標(biāo)準(zhǔn)增刪改查功能。
6,不需要使用插件,內(nèi)置支持讀寫分離,分庫分表。
7,針對mysql5.7支持動態(tài)字段。
支持mapper、template、非orm三種模式支撐業(yè)務(wù)系統(tǒng)
1,mapper指,通過掃描接口,運(yùn)行時自動生成dao實例;
2,template指,通過繼承template標(biāo)準(zhǔn)父類,生成dao子類;
3,非orm指,直接使用microDao實例,可以執(zhí)行非orm更靈活的數(shù)據(jù)庫操作。

關(guān)于事務(wù)

由于serviceBean接口對象通過包掃描發(fā)布為springbean,所以仍可以使用原有的spring事務(wù)機(jī)制。

    
    
        
     

    
     
        

            

            
            
            
            
        
     

    
    
        
        
    

SpringCloud整合

SpringCloud整合controller,service、dao層與springmvc整合均一致。
具體查看demo項目
Micro-springcloud-mvc

Nhmicro的Aop機(jī)制

加載groovy時提供aop代理機(jī)制,默認(rèn)提供事務(wù)aop和數(shù)據(jù)源切換aop
事務(wù)aop,可在加載時,識別Transactional注解,實現(xiàn)事務(wù)控制。
可自行別寫特定功能代理。
開啟代理需要在groovy的類中設(shè)置MicroAop注解指定代理類

@MicroAop(name=[MicroDefaultLogProxy.class,MicroTMProxy.class,MicroDbProxy.class], property=["","",""])

文章題目:micro-mvc框架支持mvc各層業(yè)務(wù)代碼熱部署
標(biāo)題路徑:http://www.dlmjj.cn/article/pjhddd.html