Spring中的注解:
@Component:
把资源对象交给spring来管理,相当于在xml中配置一个bean,此注解使用在实体bean的头部,等价于XML中配置的“<bean id="" class="">”标签。
@Controller、 @Service、 @Repository:
都是针对@Component注解的衍生注解,他们的作用及属性都是一样的,等价于XML中配置用于注入数据的“<property name="" ref=""> <property name="" value="">”标签,他们只不过是提供了更加明确的语义化。 -
-@Controller:一般用于表现层的注解。
-@Service:一般用于业务层的注解。
-@Repository:一般用于持久层的注解。
@Autowired:
自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。当有多个类型匹配时,使用要注入的对象的变量名称作为bean的id,在spring容器查找,找到了也可以注入成功,如果找不到就会报错。
@Qualifier:
在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用,但是给方法参数注入时,可以独立使用。 属性: value:指定bean的id。
@Resource:
直接按照Bean的id注入。它也只能注入bean类型。 属性: name:指定bean的id。 @Value:注入基本数据类型和String类型数据的 属性: value:用于指定值 @Configuration:用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationApplicationContext(有@Configuration注解的类.class)。
@ComponentScan:
用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件中的“ <context:component-scan base-package="cn.study">/context:component-scan” 属性: Value(单独使用可省略):用于指定要扫描的包。和标签中的basePackages属性作用一样。
@Bean:
该注解只能写在方法上,将方法的返回值作为一个bean,并且放入spring容器。id就是name的属性的值 属性: name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。
@PropertySource:
用于加载.properties文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。 属性: value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:
@Import:
用于导入其他配置类,在引入其他配置类时,其他类上可以不用再写@Configuration注解。当然,写上也没问题。 属性: value[]:用于指定其他配置类的字节码。
@Aspect:
指定当前类是通知类,此注解使用在类上。
SpringMvc中的注解:
@Controller:
Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。
@RequestMapping:
在类前面定义,则将url和类绑定;(如果该类里只有单个方法的话可以这样写,访问该地址直接调用该方法): @PathVariable: 与 Rest风格(占位符)的映射一起使用获取URL路径的参数数据:
@RequestParam:
常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值: 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST: GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。
POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。 该注解有三个属性: value、required、defaultValue:value用来指定要传入值的id名称、 required用来指示参数是否必须绑定、defaultValue用来指定在前端没有传值的情况下限定默认的值。
@CookieValue:
使用方法同@RequestParam,只不过它是获取cookie的值。
@ResponseBody:
当一个处理请求的方法标记为@ResponseBody时,表示该方法需要输出其他视图(json、xml),springmvc会通过默认的json转化器转化输出。
@RestController:
有时如果在一个Contoller中所有的方法都是用来响应json格式数据的,那么如果有多个方法,就需要在多个方法上使用@ResponseBody,这样太麻烦,springmvc提供了一个@RestController,将该注解使用在Controller类上,那么该controller中的所有方法都默认是响应json格式的数据了。
Mybatis常用注解总结:
@Mapper:
作用是为了把mapper这个DAO交给Spring容器管理,一般不用加,我们在XXXMapper.xml中的namespace中已经指定过了。
@Param:
使用@Param注解为相应的查询接口传递值,但是具体SQL语句中的参数要与@Param中定义的参数保持一致。