關(guān)注注解在方法上和注解在屬性上的異同。
@老師,請(qǐng)教一個(gè)問(wèn)題: @Column(length = 20) ? ?public String getName() { ? ? ? ?return name; ? ?} 修改默認(rèn)的大小時(shí),我第一次將@Id//主鍵是id ? ?@GeneratedValue //id自增 配置在屬性上,沒(méi)有執(zhí)行,再改到方法上注解,就OK了。注解方法和注解屬性有什么異同,底層的實(shí)現(xiàn)原理都是一樣的嘛?
2017-11-08
兩者底層的實(shí)現(xiàn)原理是不一樣的,注解寫(xiě)在屬性上,是通過(guò)反射對(duì)屬性值強(qiáng)行訪問(wèn),因?yàn)閷傩酝撬接械模@樣寫(xiě)就破壞了java的封裝性原則,你在屬性上寫(xiě)的private就失去了意義,而且注解直接寫(xiě)在屬性上,一些數(shù)據(jù)內(nèi)容較多的字段,或者外鍵約束等復(fù)雜字段上,會(huì)對(duì)你的表的構(gòu)建有所影響。而寫(xiě)在方法上,底層是通過(guò)反射正常調(diào)用set或個(gè)get方法,這樣一般不會(huì)出現(xiàn)意外情況的。所以我建議你把注解寫(xiě)在方法上!
2017-08-20
OK,thx
2017-08-18
底層的原理是一樣的,在屬性上沒(méi)有執(zhí)行可能是底層的沒(méi)有對(duì)屬性設(shè)置而對(duì)方法設(shè)置了該注解的效果;