Spring MVC 注解

注解:
/********************************************************** Jsp *************************************************************************/
/********************************************************** Controller *************************************************************************/
@Controller    //控制器
@RequestMapping("/mall/cartitem/*")        //映射路径
public class CartItemController {
@Resource                                                                 //默认按bean 的name 进行查找,如果没有找到会按type 进行查找此时与@Autowired 类 似,在没有为 @Resource 注解
      //其它情况 :                                                             //显式指定 name 属性的前提下,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、
 //1、@Resource(name="dataSource")                 //ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的
      //2、@Resource(type=DataSource.class)  //操作。此时 name 属性不需要指定 ( 或者指定为""),否则注入失败;
private IAdminLogService iadminlogservice;          
 
}
@InitBinder        //初始化Binder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
 
@RequestMapping(value = "delete")
public String delete(HttpServletRequest request) {
}
@SuppressWarnings("unchecked")       //废弃警告信息 
@RequestMapping(value = "addToGwc/{id}/{num}")    //映射位置
public String addToGwc(HttpServletRequest req, Model model,
@Valid Production production //实体设置+类+类的引用  直接将页面传过来的production对象中的信息封装到里面去了
@PathVariable Long id, //此处id对应映射时传递过来的值
@PathVariable int num) {                                        //此处num对应映射时传递过来的值
/*...
 内容
 ...*/
}
 
@RequestMapping(value = "updateProductCommodity/{id}")
public void updateProductCommodity(@PathVariable long id,
@RequestParam(value = "file1", required = false) MultipartFile file1,        //请求参数,将name名为file1的value值赋予给MultipartFile file1这个属性; required = false这个表示
//如果jsp中没有file1这个值,将不会提示,默认值为true。
HttpServletRequest request, HttpServletResponse response)
throws IOException {
}
@Autowired                                     // 自动连接
public void setShopManager(CartItemManager cartItemManager) {
this.cartItemManager = cartItemManager;
}
/********************************************************** Manager *************************************************************************/
@Component      //成分
@Transactional                          //事务处理
public class PaymentInfoManager {
/*...
 内容
 ...*/
}
@Autowired                //自动连接
public void setPaymentInfoDao(PaymentInfoDao paymentInfoDao) {
this.paymentInfoDao = paymentInfoDao;
}
@Transactional(readOnly=true)          //事务处理
public PaymentInfo get(Long id){     
return paymentInfoDao.get(id);
}
@SuppressWarnings("unchecked")   // 这一个类型可以来暂时把一些警告信息消息关闭
public List getPaymentInfoList(String hql,Object...values){
Query query=paymentInfoDao.createQuery(hql, values);
return query.list();
}
@SuppressWarnings("unchecked")
@Transactional(readOnly = true)
public List<Production> queryLimitF(String hql, Object... values) {
Query query = productionDao.createQuery(hql, values);
query.setFirstResult(0);
query.setMaxResults(5);
return query.list();
}
 
/********************************************************** Dao *************************************************************************/
 @Component                                                        //成员
/********************************************************** VO *************************************************************************/
/*-----------第一种情况-------------*/
@Entity                                                                    //实体
@Table(name = "brand")                                      // 表+主键
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)    //默认的缓存策略.                   //(需要时使用)
@Lazy                                                                                                                      //(需要时使用)
public class Brand extends IdEntity {
@NotEmpty                                                        // 不是空
private String name;// 商品名称
@NotNull                                                           //不是空
private Float actualPrice; // 实际价格
@Size(min=1,max=255)                                 //限制长度大小
private String name;//品牌名称
@NotEmpty
@Size(min=1,max=255)
private String name;//分类名称
@Column(name="has_shop")
private Long hasShop;
private List<ImageDesc> imageDescList = Lists.newArrayList();
//多对多定义
@ManyToMany
//中间表定义,表名采用默认命名规则
@JoinTable(name = "imagedesc", joinColumns = { @JoinColumn(name = "newsImageId") }, inverseJoinColumns = { @JoinColumn(name = "id") })
//Fecth策略定义
@Fetch(FetchMode.SUBSELECT)
//集合按id排序.
@OrderBy("id")
//集合中对象id的缓存.
//@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)                (备选)
public List<ImageDesc> getImageDescList() {                                               //一般对list都采用以上注解。
return imageDescList;
}
private String name;
@Column(nullable = false, unique = true)                     //字段非空且唯一, 用于提醒Entity使用者及生成DDL
public String getName() {
return name;
}
@Transient                //非持久化属性.
@SuppressWarnings("unchecked")
public List<Long> getAuthIds() {
return ConvertUtils.convertElementPropertyToList(authorityList, "id");
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
/*-----------第二种情况-------------*/
@MappedSuperclass
public abstract class IdEntity {
protected Long id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
/********************************************************** Filter *************************************************************************/
private UserDetailsService userDetailsService;
@Autowired
public void setUserDetailsService(UserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
}
private UserDetailsService userDetailsService;
@Required
public void setDefaultUserName(String defaultUserName) {
this.defaultUserName = defaultUserName;
}
/************************************************************其它*******************************************************************************/
@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。 
@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上
@Documented  @Documented的目的就是让这一个Annotation类型的信息能够显示在javaAPI说明文档上;没有添加的话,使用javadoc生成API文档的时候就会找不到这一个
    类型生成的信息. 
@Retention(RetentionPolicy.RUNTIME)   
@Target(ElementType.ANNOTATION_TYPE):@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上的.说明一下:TYPE(类型), FIELD(属性),   
    METHOD(\ 方法), PARAMETER(参数), CONSTRUCTOR(构造函数),LOCAL_VARIABLE(局部变量), ANNOTATION_TYPE,PACKAGE(包),其中的TYPE(类型)是指可以用在
posted @ 2014-02-10 13:56  daniell2012  阅读(267)  评论(0编辑  收藏  举报