您的位置:首页 > 编程语言 > Java开发

Spring MVC 常用注解(没网上那么复杂和理论)

2014-03-20 10:07 399 查看
注解:

/********************************************************** 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);

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 *********************
4000
****************************************************/

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(类型)是指可以用在

    Class,Interface,Enum和Annotation类型上

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc