Spring4.1.6常用注解

来源:互联网 发布:maxwell软件下载 编辑:程序博客网 时间:2024/06/05 11:14

      Spring常用的注解有:

     @Controller 
    @Service 
    @Autowired 
    @RequestMapping 
    @RequestParam 
    @ModelAttribute 
    @Cacheable 
    @CacheFlush 
    @Resource 
    @PostConstruct 
    @PreDestroy 
    @Repository 
    @Component(不推荐使用)
    @Scope 
    @SessionAttributes 
    @InitBinder 
    @Required 
    @Qualifier 

@Controller

 •例如
@Controller 
 public class SoftCreateController extends SimpleBaseController {} 

 •或者
@Controller(“userController”)

•说明
 @Controller负责注册一个bean到spring上下文中,bean的ID默认为类名称开头字母小写


@Service  •例如 @Service  public class SoftCreateServiceImpl实现ISoftCreateService {}  •或者 @Service(“softCreateServiceImpl”)  •说明 @Service负责注册一个bean到spring上下文中,bean的ID默认为类名称开头字母小写

@Autowired •例如  @Autowired 私人ISoftPMService softPMService; 或者@Autowired(required = false) private ISoftPMService softPMService = new SoftPMServiceImpl();  •说明 @Autowired根据bean类型从春天上线文中进行查找,注册类型必须唯一,否则报异常 

与@Resource的区别在于,@资源允许通过bean名称或bean类型两种方式进行查找@Autowired(required = false)表示,如果spring上下文中没有找到该类型的bean时,才会使用新的SoftPMServiceImpl(); 

@Autowired标注作用于地图类型时,如果地图的键为String类型,则Spring会将容器中所有类型符合Map的值对应的类型的Bean增加进来,用Bean的id或名称作为Map的键

@Autowired还有一个作用就是,如果将其标注在BeanFactory中类型,ApplicationContext类型,ResourceLoader类型,ApplicationEventPublishe r类型,MessageSource类型上,那么Spring会自动注入这些实现类的实例,不需要额外的操作


@RequestMapping

@控制器
@RequestMapping(“/ bbtForum.do”)IT学习者(www.itxxz.com) 
public class BbtForumController { 
             @RequestMapping(params =“ 

WebRequest 内部包含了请求对象 •java.util.Locale 绑定到请求对应的Locale对象上 •java.io.InputStream / java.io.Reader  可以借此访问请求的内容 •java.io.OutputStream / java.io .Writer 可以借此操作回应的内容 •任何标注了@RequestParam注解的入参 被标注@RequestParam注解的入参将绑定到 特定的请求参数上。•java.util.Map / org.springframework.ui。 ModelMap 它绑定Spring MVC框架中每个请求所创建的潜在的模型对象,它们可以被Web视图对象访问(如JSP) •命令/表单对象(注:一般称绑定使用HTTP GET发送的URL参数的对象为命令对象,而称绑定使用HTTP POST发送的URL参数的对象为表单对象)  它们的属性将以名称匹配的规则绑定到URL参数上,同时完成类型的转换。  而类型转换的规则可以通过@InitBinder注释或通过HandlerAdapter的配置进行调整  •org.springframework.validation.Errors / o rg.springframework.validation。 BindingResult 为属性列表中的命令/表单对象的校验结果,注意检验结果参数必须紧跟在命令/表单对象的后面版权所有www.itxxz.com•org.springframework.web.bind.support.SessionStatus 可以通过该类型状态对象显式结束表单的处理,这相当于触发会话清除其中的通过@SessionAttributes定义的属性 请求处理方法返回值的可选类型 •void此时逻辑视图名由请求处理方法对应的URL确定,如以下的方法:

@RequestParam

@RequestMapping(“/ welcome.do”) public void welcomeHandler(){} 对应的逻辑视图名为“welcome” •String 此时逻辑视图名为返回的字符,如下的方法: @RequestMapping method = RequestMethod.GET) public String setupForm(@RequestParam(“ownerId”)int ownerId,ModelMap model){ Owner owner = this.clinic.loadOwner(ownerId); model.addAttribute(owner); 返回“ownerForm”; 对应的逻辑视图名为“ownerForm” •org.springframework.ui.ModelMap 和返回类型为void一样,逻辑视图名取决于对应请求的URL,如下面的例子: @RequestMapping(“/ vets.do”) public ModelMap vetsHandler(){ return new ModelMap(this.clinic.getVets()); 对应的逻辑视图名为“vets”,返回的ModelMap将被作为请求对应的模型对象,可以在JSP视图页面中访问到。 •ModelAndView 当然还可以是传统的ModelAndView。

@ModelAttribute •作用域:请求  •例如 @RequestMapping(“/ base / userManageCooper / init.do”) public String handleInit(@ModelAttribute(“queryBean”)ManagedUser sUser,Model model){... 或者 @ModelAttribute(“coopMap”)//将coopMap返回到页面公共地图<Long,CooperatorInfo> coopMapItems(){} •说明 @ModelAttribute声明在属性上,表示该属性的值来源于model里“queryBean”,并被保存到模型里@ModelAttribute声明在方法上,表示该方法的返回值被保存到模型里

@Cacheable和@CacheFlush  

•@Cacheable:一个声明的方法报道查看值应该被缓存  例如:@Cacheable(modelId = “testCaching”)

 •@CacheFlush:一个声明的英文方法清空缓存的触发器 例如:@CacheFlush(modelId =“testCaching”) •说明 要配合缓存处理器使用

@Resource 

•例如 @Resource private DataSource dataSource; //注入名为“dataSource”的bean  ?或者 @Resource(name =“dataSource”) @Resource(type = DataSource.class) ?说明 @Resource默认按bean的名称进行查找,如果没有找到会按类型进行查找, 此时与@Autowired类似。 在没有为@Resource注解显式指定名称属性的前提下,如果将其标注在BeanFactory类型,ApplicationContext类型,ResourceLoader类型,ApplicationEventPublishe r类型,MessageSource类型上,那么Spring会自动注入这些实现类的实例,不需要额外的操作。此时名称属性不需要指定(或者指定为“”),否则注入失败; 

@PostConstruct和@PreDestroy 

•@PostConstruct 在方法上加上注解@PostConstruct,这个方法就会在Bean初始化之后被春容器执行 (注:Bean初始化包括,实例化Bean,并装Bean的属性(依赖注入))

•  @PreDestroy 在方法上加上注解@PreDestroy,这个方法就会在Bean被销毁前被Spring容器执行。 @Repository •与@Controller,@服务类似,都是向春天上下文中注册豆,不在赘述。

@Component(不推荐使用) @Component是所有受春季管理组件的通用形式,春天还提供了更加细化的注解 式:   。@Repository,@服务,@控制器,它们分别对应存储层的Bean,业务层豆,和展示层豆 目前版本(2。}) 

@InitBinder •说明 如果希望某个属性编辑器仅作用于特定的控制器, 可以在控制器中定义一个标注@InitBinder注解的方法, 可以在该方法中向控制器注册若干个属性编辑器 •例如 @ InitBinder public void initBinder(WebDataBinder binder){ SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd”); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class,新CustomDateEditor(dateFormat,false)); }

 @Required •例如  @required  public   setName(String name){} •说明 @ required负责检查一个bean在初始化时其声明的set方法是否被执行,当某个被标注了@Required的Setter方法没有被调用,因此,在这种情况下,在某些情况下,可能会发生变化。的去检查属性是否赋值了以及赋予什么样的值。如果将该注解在非setXxxx()类型的方法则被忽略。

@Qualifier •例如 @Autowired  @Qualifier(“softService”) 私有ISoftPMService softPMService;  •说明  使用@Autowired时,如果找到多个同一类型的bean,则会抛异常,此时可以使用@Qualifier(“beanName”),明确指定bean的名称进行注入,此时与@Resource指定名称属性作用相同 



0 0
原创粉丝点击