元注解:
@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注解经常我们在写程序时,有时候有些功能在当前的版本中并不提供,或由于某些其它原因,有些方法 ...
随机推荐
- php 登录实例演示
<pre name="code" class="python">一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主 ...
- BZOJ 2016: [Usaco2010]Chocolate Eating
题目 2016: [Usaco2010]Chocolate Eating Time Limit: 10 Sec Memory Limit: 162 MB Description 贝西从大牛那里收到了 ...
- Drying(贪心)
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11512 Accepted: 2977 Descripti ...
- Android开发之TextView高级应用
Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...
- Oracle EBS Web ADI 中的术语
Oracle EBS Web ADI 中的术语 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 异步调用异步调用是这样子的,和引入接口表中的数 ...
- SQL中的Update、delete与inner join 联合使用
Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,太神奇了. update的格式是 update ...
- 特殊集合(stack、queue、hashtable的示例及练习)
特殊集合:stack,queue,hashtable stack:先进后出,一个一个的赋值一个一个的取值,按照顺序. .count 取集合内元素的个数 .push() ...
- Yii2 数据操作DAO
参考: http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao http://blog.csdn.net/hzqghost/artic ...
- poj 1430 第二类斯特林数
1 #include <iostream> #include <cmath> #include <algorithm> using namespace std; i ...
- (Problem 28)Number spiral diagonals
Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is forme ...