求高人指点诡异的java代码,包证很多人没见过。90%没用过无意在网上看到某个人发的一种写法, 这是什么写法那
求高人指点诡异的java代码,包证很多人没见过。90%没用过
无意在网上看到某个人发的一种写法, 这是什么写法那么怪异,而且是用txt文件,不是用java文件。但是内容确实是
java的呀。运用ssh框架术。不懂这个#{Entity}类似这种.请高人指点,这个从某种意义上来说是一种类的规范,像泛型的思想有点,只是不断的替换类名,其实架构还是不变,内容变。
import #{dao_p}.#{Entity}Dao;
import #{entity_p}.#{Entity};
import #{manager_p}.#{Entity}Mng;
@Service
@Transactional
public class #{Entity}MngImpl implements #{Entity}Mng {
@Transactional(readOnly = true)
public Pagination getPage(int pageNo, int pageSize) {
Pagination page = dao.getPage(pageNo, pageSize);
return page;
}
@Transactional(readOnly = true)
public #{Entity} findById(Integer id) {
#{Entity} entity = dao.findById(id);
return entity;
}
public #{Entity} save(#{Entity} bean) {
dao.save(bean);
return bean;
}
public #{Entity} update(#{Entity} bean) {
Updater<#{Entity}> updater = new Updater<#{Entity}>(bean);
bean = dao.updateByUpdater(updater);
return bean;
}
public #{Entity} deleteById(Integer id) {
#{Entity} bean = dao.deleteById(id);
return bean;
}
public #{Entity}[] deleteByIds(Integer[] ids) {
#{Entity}[] beans = new #{Entity}[ids.length];
for (int i = 0,len = ids.length; i < len; i++) {
beans[i] = deleteById(ids[i]);
}
return beans;
}
private #{Entity}Dao dao;
@Autowired
public void setDao(#{Entity}Dao dao) {
this.dao = dao;
}
}
[最优解释]有点像 ibatis 里的实现 Dao 接口的
[其他解释]这是一个自定义的开发模板,利用一套自定义的引擎来自动生成代码。很多代码生成器都是这么做的。
[其他解释]EL(表达式语言)的运用吧。
不觉得很怪异。没用过倒是真的。
[其他解释]不懂的
[其他解释]el表达式不是dollar符吗?
[其他解释]这个那里是el表达式= =。 ${xxx}这样才是。这个文件要通过某个框架才能运行的。就不懂是什么java技术了。
[其他解释]hibernate的注解的写法吧,搜索“hibernate 注解”即可找打答案。
[其他解释]= =。我一向是用注解的。难道我不懂= =,问题是这个文件本来就不是.class是.txt
[其他解释]通过配置的方式自动生存service类,利用自定义类加载器加载这些业务类字节码,可以省去不少编码。不过缺点也蛮多的。
[其他解释]还请说详细点。缺点有哪些?
[其他解释]哪个说EL只能用$,OGNL和UEL都用上了#
简单地说,无非就是将表达式的值替换到这些EL表达式占位的地方,然后自动编译、加载、使用这些动态生成的类。Spring(Java Config)应该就可以做这活。
(抱歉,说了不少推测的话)
[其他解释]应该是注解写法吧.
也不是蛮诡异阿.
只不过我没有用过而已.
[其他解释]顶。。还是求用过的java高手指点。。。说得不是很明白
[其他解释]应该是自己写的一个小框架
从文件上的代码来看,这里是通用的一个service层(manager)的实现。
我个人推断如下:
自己写的小框架通过io操作读取该文本文件,然后再通过配置的文件或者其他的信息注入方式,实时替换文中#{} 标注的字段,从而实现代码的重用,这倒有点像代码模板。
另外,观察它的代码,明显的是“约定大于配置”,程序的命名是按照特定的方式来进行的,所以替换会很方便.
不过这样似乎只能解决通用的CRUD的操作,更特殊的操作,貌似仍有缺陷.
[其他解释]不知道是什么东东。
[其他解释]疑似是自动生成代码的一个模板!
[其他解释]就是一个 自定义的代码生成模板
[其他解释]Struts2 的注解 编程方法而已
[其他解释]谢谢你们回答了那么多,还是没找到真正的。#{Entity}只要能理解#{}取值的java框架技术是那个就OK.继续寻找人回答
[其他解释]通配符号而已,所有的类的命名和方法命名都按照一定的规律来,调用类和方式时,就简单多了!
[其他解释]这个应该是一个模板,一个代码生成器的模板而已。
[其他解释]传说中的Java模板?
[其他解释]hibernate的注解
[其他解释]都说了是代码生成器的模板了。。 还找什么回答呀...
[其他解释]搞毛 那是一个模板!!!#{Entity}这些东西都是你在后面是可以自动替换的 ! 你反编译你那个生成好的类就能看出来了 他已经把你的类个他的结合在一块了
[其他解释]是模板 okgo123
少见多怪了。
[其他解释]这应该是什么类的模版吧.用于自动生成之类的工作.
把里面的标签替换掉来生成一个标准类.
[其他解释]代码模板,velocity之流
[其他解释]一个模板!
[其他解释]动态代码生成
[其他解释]。。
[其他解释]可惜我还是菜鸟~
[其他解释]这个是模板代码,需要进行处理之后才能用的,比如把 #{Entity} 替换掉。
[其他解释]是吧,不过这么写感觉也太怪了
------其他解决方案--------------------
模板,很容易看出
只是不太明白为什么删除方法还要有返回 public #{Entity} deleteById(Integer id)
[其他解释]大公司经常会有这样子的代码,这种代码是要先进行预处理的。
我原来用python处理过这种文件,预处理完后就是java代码了。
[其他解释]没见过 呵呵
[其他解释]freemerker做的代码生成模板
[其他解释]一个生成代码的替换模板要什么框架技术啊. 你自己写代码照样可以实现.
[其他解释]注解的一种写法,spring AOP 就有这种写法 ,我们常用的是xml方法的升明,这是另一种写法
[其他解释]null