元注解:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
作用:@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。
示例:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface LogAnnotation {
//业务模块Id
String moduleId();
//功能ID
abstract String functionId() default "99";
//操作说明
String option();
//app参数
abstract String[] Params() default{};
}
元注释,即为注解本身做注解,@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型。可以通过default来声明参数的默认值。在这里可以看到@Retention和@Target这样的元注解,用来声明注解本身的行为。@Retention用来声明注解的保留策略,有CLASS、RUNTIME和SOURCE这三种,分别表示注解保存在类文件、JVM运行时刻和源代码中。只有当声明为RUNTIME的时候,才能够在运行时刻通过反射API来获取到注解的信息。@Target用来声明注解可以被添加在哪些类型的元素上,如类型、方法和域等。
JPA注释:
@Repository或是使用Spring的<jpa:repositories>来扫描包下的DAO
作用:使用Spring JPA框架来自动实现业务逻辑
示例:
@Repository
public interface AppVersionDao extends PagingAndSortingRepository<AppVersion, String> {
}
<jpa:repositories base-package="com.foresee.hn.**.dao" entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager" repository-impl-postfix="CustomImpl"/>
@Service("gztdService")
@Transactional()
作用:在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
@Transactional(readOnly = true)
作用:声明成只读事务,提高查询效率。
示例:
@Service("gztdService")
@Transactional(readOnly = true)
public class GztdServiceImpl extends GenericServiceImpl<RzGztd, Long> implements GztdService {
...
}
@Transactional
public void addRzGztd(RzGztd rzGztd){
...
}
@PersistenceContext(unitName="itax")
作用:注入由Spring容器托管的EntityManager对象,执行与持久化有关的操作
示例:
@PersistenceContext(unitName="itax")
private EntityManager entityManager;
applicationContext.xml中的配置:
<bean id="abstractEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" abstract="true">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="${hibernate.generateDdl}" />
<property name="showSql" value="${hibernate.showSql}" />
<property name="database" value="${hibernate.database}"/>
</bean>
</property>
<property name="persistenceUnitName" value="itax"></property>
<property name="jpaProperties">
<map>
<entry key="hibernate.format_sql" value="${hibernate.format_sql}"/>
</map>
</property>
<property name="packagesToScan" value="com.foresee.hn.taxoffice.common.entity" />
</bean>
@RequestMapping(value = "/submit")
作用:可在类或方法上添加,组合使用,表示对应的请求会被该Controller接受。
示例:
@Controller
@RequestMapping(value="/submit")
public class AppVersionController extends CommonController {
...
@LogAnnotation(moduleId=LogModule.MODUlE_WEB_APPGL,functionId=LogModule.WEB_APPGL_INDEX)
@RequestMapping(value="/release",method={RequestMethod.POST,RequestMethod.GET})
public String showReleasePage(AppVersionBean bean,Model model,HttpServletRequest request){
bean.setUserId(String.valueOf(this.getLoginUser(request).getCzydm()));
bean.setUserName(this.getLoginUser(request).getCzyxm());
bean.setReleaseTime(new Date());
bean.setVersionId(sequenceService.getAppVersionSequence());
model.addAttribute("queryParams", bean);
return "main/app/release";
}
}
- LinkedHashMap和HashMap的比较使用 由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。 ? import java.util.HashMap; impo
LinkedHashMap和HashMap的比较使用 由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下. import java.util.HashMap; import ...
- 细数Java项目中用过的配置文件(ini 篇)
Java 菜鸟,会把可变的配置信息写死在代码里:Java 老鸟,会把可变的配置信息提取到配置文件中.坊间流传这么一句非科学的衡量标准,来评判程序员的级别. 那么,项目中的配置信息,你平时都是怎样来实现 ...
- 细数Java项目中用过的配置文件(YAML篇)
灵魂拷问:YAML,在项目中用过没?它与 properties 文件啥区别? 目前 SpringBoot.SpringCloud.Docker 等各大项目.各大组件,在使用过程中几乎都能看到 YAML ...
- Java注解基本原理
注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致.Java S ...
- 有用的Java注解
好处: 能够读懂别人的代码,特别是框架相关的代码: 让编程更加简洁,代码更加清晰. 使用自定义注解解决问题!! Java1.5版本引入. Java中的常见注解 @Override:告诉使用者及编译器, ...
- Java注解解析-搭建自己的注解处理器(CLASS注解使用篇)
该文章是继Java注解解析-基础+运行时注解(RUNTIME)之后,使用注解处理器处理CLASS注解的文章.通过完整的Demo例子介绍整个注解处理器的搭建流程以及注意事项,你将知道如何去搭建自己的注解 ...
- java 注解开发
目录 注解 JDK自带的注解三个 注解分类 按照运行机制 按照来源分类 自定义注解的语法要求 元注解 解析注解 获取注解的注解 Spring中的注解 组合注解 注解 JDK自带的注解三个 @Overr ...
- 框架基础——全面解析Java注解
为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码: 2. 让编程更加简洁,代码更加清晰: 3. 让别人高看一眼. spring.mybati ...
- @interface java注解
@Documented,@Retention,@Target,@Inherited 1. 编写自定义@Todo注解经常我们在写程序时,有时候有些功能在当前的版本中并不提供,或由于某些其它原因,有些方法 ...
随机推荐
- python+opencv
$cd numpy $ sudo python setup.py build $ sudo python setup.py installRunning from numpy source direc ...
- qwebkit - Open new window after click using QT - Stack Overflow
qwebkit - Open new window after click using QT - Stack Overflow Open new window after click using QT
- java对象复制
一,a和b都指向同一个对象,改变其中一个另一个也会改变 package com.ciaos; class Human{ public Human(String string, int i) { // ...
- Memcached源代码分析 - Memcached源代码分析之消息回应(3)
文章列表: <Memcached源代码分析 - Memcached源代码分析之基于Libevent的网络模型(1)> <Memcached源代码分析 - Memcached源代码分析 ...
- 变脸不变质的桥梁模式(Bridge Pattern)
有一哥们是搞山寨货的,什么流行就搞什么.自己有个厂子,前些时间服装挣钱,就生产衣服,如今搞手机挣钱,搞手机,这哥们非常聪明,就换了个产品,工人,厂房都不变.他是怎么做到的?用类图来模拟一下: 由类图能 ...
- Nutch 二次开发之parse正文内容
关于nutch的基础知识能够參考lemo的专栏 nutch支持二次开发,为了满足搜索的准确率的问题,考虑只将网页正文的内容提取出来作为索引的内容,相应的是parse_text的数据.我使用的事nutc ...
- 解决Jedis数据读取乱码问题
现象 同一套代码,同一个数据源,不同的操作系统,在OSX上数据提取编码正常,而Ubuntu上拉取数据乱码,数据拉取代码如下. @Override public List<String> m ...
- [Swust OJ 1023]--Escape(带点其他状态的BFS)
解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535 Descript ...
- mina教程
关于mina介绍这里不做阐述..... 我们先做一个关于mina的helloworld 首先先下载mina包:http://mina.apache.org/ (如果你已经下载,此步骤忽略) 下载下来以 ...
- C#后台跳转
后台跳转的方法: 1.js脚本 [不推荐使用] Context.Response.Write("<script language=javascript>window.locati ...