코드 생성기, 생각해봐
2742 단어 코드 생성
옛날에 코드스미스가 있었던 날은 조화롭고 행복했어요. 데이터 원본을 골라서 실행을 시키면 브러쉬 코드가 나와서 시원했어요.
codesmith 지원.net, c# 문법으로 cs 파일을 내보낼 수 있습니다. 언제 자바 파일을 내보낼 수 있겠습니까? 하지만 드디어 txt 파일을 내보낼 수 있어서 보완할 수 있습니다.
무엇보다 크랙을 기다려야 하는데...
회사의 무료한 밀크티 프로젝트가 끝난 후부터 아직 아무것도 쓰지 않았다. 허위사실을 꾸미고 싶지 않다. 무슨 웹 사이트, 무슨 블로그, 너무 아득하고 인터넷이 한꺼번에 가득하다.
코드 생성기를 쓰는 것이 실용적이다.
그래서 자료를 수집하고freemaker의 코드를 보았는데 나는 NPE에게 깊이 패했다. 변수를 초기화하지 않으면 로그가 바로 터진다.
아니면 내가 비교적 익숙한velocity로 돌아가서 다음 원본을 봤는데 가장 먼저 생각한 것은template를 삽입점으로 하는 것이다. 만약template가 절대 경로를 직접 찾을 수 있다면 많은 파일 읽기 방식을 고려할 필요가 없다.
코드를 보았습니다.
protected Resource loadResource(String resourceName, int resourceType, String encoding)
throws ResourceNotFoundException,
ParseErrorException,
Exception
{
Resource resource = createResource(resourceName, resourceType);
resource.setRuntimeServices(rsvc);
resource.setName(resourceName);
resource.setEncoding(encoding);
//…………
for (Iterator it = resourceLoaders.iterator(); it.hasNext();)
{
//…………
try
{
if (resource.process())
{
//………………
}
}
catch (ResourceNotFoundException rnfe)
{
/*
* that's ok - it's possible to fail in
* multi-loader environment
*/
}
}
//…………
return resource;
}
가장 중요한 건 이 문장에서.
resource.process()
template에 들어가는 코드 추적
try
{
is = resourceLoader.getResourceStream(name);
}
velocity의 ResourceLoader는 여러 가지 파일 읽기 방식을 지원합니다. 구체적인 것은 제가 예전에 쓴 글을 보십시오.
기본 FileResourceLoader입니다. 절대 경로의 읽기가 지원되지 않습니다.나는 매우 게으르다. 그래서 나는 ResourceLoader를 다시 쓰기가 귀찮다.
만약 삽입점을template에 놓을 수 없다면, 템플릿을 문자열로 직접 대체할 수 있는 다른 방법이 있을 것 같습니다.
가장 간단한 것은 다음과 같습니다.
String s = " We are using $project $name to render this.";
w = new StringWriter();
Velocity.evaluate( context, w, "mystring", s );
그러나string으로는 불가능하므로 흐름을 직접 조종해서 해석하는 것이 좋다.
나중에 evaluate에 다시 불러오는 함수가 있는 것을 발견했는데 바이트 흐름을 직접 처리할 수 있고 상당한nice를 입구에서 찾았다.많은 시간을 절약했다.
public static boolean evaluate( Context context, Writer writer,
String logTag, InputStream instream ){
//…………
}
이것만 있으면 코드 생성기를 실현하는 것은 어렵지 않다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
사용자 정의 메모 생성 코드 (1) 의javaPoetAPI 설명생성 클래스, 인터페이스, 열거 대상 3.4 자바 클래스 추가 방법 3.10 JavaPoet 생성 방법 생성 클래스, 인터페이스 또는 매거 Modifier는 코스메틱 키워드 Public, Protected, Priv...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.