• 项目中用到的Java注解


    元注解:
    @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";
        }
     
    }
     
     
  • 相关阅读:
    新的工作电脑 神州优雅A550i7
    职责链模式(Chain of Responsibility)
    访问者模式(Visitor)
    单例模式(Singleton)
    解释器模式(Interpreter)
    迭代器模式(Iterator)
    解决 Visual Stuido 工具栏中的工具重置后,恢复回来。
    WCF 一步一步 发布 WCF服务 到 Windows 服务 (图)
    桥接模式(Bridge)与合成/聚合复用原则(CARP)
    dbentry访问带密码的Access
  • 原文地址:https://www.cnblogs.com/andrew-chen/p/4692988.html
Copyright © 2020-2023  润新知