java后台杂记
1.在@Select使用动态SQL有 "<=" 时要转义:<![CDATA[ <= ]]>
2.assert函数即断言,也即做出一些假设,程序运行时如果假设不成立,程序就会中断。实际上我们在调试一个出错的程序时,由于程序出错的位置往往不是错误起因的位置,我们需要追溯错误的起源,就需要在前方的一定位置确保某个变量的值符合一定的条件。一般涉及到金钱计算的都用到。
Assert.notNull(Money, "Moneycannot be null");
3.调用别的项目的接口
restTemplate.postForEntity(RmiUrlConstant.UPDATE_CAMPUS_URL[对接接口], campusUpdateModel[传入参数], ResponseModel.class[接收类型]).getBody();
4.authorize权限
方法上写:
@AuthorityFunction(name = "文章列表", type = FunctionTypeEnum.CONSOLE_ARTICLE, authority = "console.article.list")
@PreAuthorize("hasAuthority('console.article.list')")
页面上写:
sec:authorize="hasAuthority('console.article.list')"
5.@Autowired自动把bean里面引用的对象的setter/getter方法省略
6.如果subject中有aRoleName角色才能访问someMethod方法,否者抛出异常AuthorzationException
@RequiresRoles('aRoleName')
public void someMethod();
7.要求subject中必须同时含有file:red和write:aFile的权限才能执行someMethod()方法,否者抛出异常AuthorzationException
@RequiresPermissions({'file:red','write:aFile'})
public void someMethod();
8.@Param注解可以使SQL语句用#{}或${}
9.Freemarker模板的优点:可以根据提供的数据和创建好的模板,去自动创建html静态页面
10.Lombok插件的作用:可以通过注解帮我们消除臃肿的代码。比如:用@Date后可以不用写get/set方法
11.Private static final long serialversionUID = 1L; 作用是使版本统一,不会出现版本不一致错误
12.@override 用于重写父类方法,方法名跟参数不一致时便报错
13.@AllArgsConstructor 为该类产生无参的构造方法和包含所有public参数的构造方法(为lombok注解)
14.@AfterReturning 后置增强,方法正常执行完后时执行
15.@Component 把普通pojo实例化到spring容器,相当于配置文件中的<bean id="" class="">
16.@Rointcut("execution(* com.savage.*(..))") 表示匹配com.savage中所有公有方法
17.@Before 前置通知,在方法执行之前执行
18.shiro.notAuthenticated 表示未认证通过的用户
19.shiro.principal 输出当前用户信息
20.shiro.authenticated 已认证通过用户,不包含记住的用户
21.@MapperScan 扫描Mapper类的路径
22.@EnableCaching 为spring boot提供了缓存管理功能
23.@Configuration 用于定义配置类,可替换xml配置文件,被注解的类内部包含一个或多个被@Bean注解的方法,这些方法江北扫描,并用于构建bean定义,初始化spring容器,但不能用于final类
24.@Aspect 把当前类表示为一个切面供容器读取
25.(FTL指令) #assign用于在页面上定义一个变量
26.@Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员
27.@Inherited 允许子类继承父类的注解
28.SQL timestamp类型作为区别数据和修改的标识,只是递增的数字,不保留日期或时间(若要记录日期或时间,请使用 datetime 数据类型。)比如:某条记录同时被两个人A和B读取并且正在修改。A先修改完成然后保存了,然后B再保存的时候,会由于时间戳不一致(因为A之前先保存修改了时间戳)导致B保存失败
29.@Target 用于设定注解的使用范围
30.@Retention 可以用来修饰注解。@Retention(RntentionPolicy.RUNTIME) 表示注解不仅被保存到class文件中,JVM加载class文件后仍存在
31.(Mybatis-Plus注解)@TableField(exist = false) 表示该实体类的属性不是数据表的字段,但又是必须用到的。
32.@interface 不是接口是注解类,使用@interface注解时,自动继承了java.long.annotation.
而Annotation接口可以实现三种功能:1.声明类:class。2.声明类别:category。3.声明扩展:Extension
33.@EnableGlobalMethodSecurity 判断用户对某个控制层的方法是否有访问的权限
34.@Qualifier 限定描述符,用于细粒度选择者
35.StringUtils.trimToEmpty() 判断输入的参数是否为null,为nul就返回""字符串,否者去掉字符串两边的空格或制表符
36.Enum.valueof() 枚举类转成string类型
Enum.values() 返回存储枚举对象地址,可以for循环输出属性
37.@RequiresAuthentication 验证用户是否登录,相当于方法 subject.isAuthenticated()为true时
38.DateTime.parse() 将日期和时间的字符串形式转成等效的时间
39.stirng的equals方法和contentequals方法区别:
equals方法只有在另一个对象是string类型情况下才返回true
contentEquals只要求另一个对象是charsequence或其子类的对象
GG-伏沙金