spring框架注解详解
常用注解
@Controller (注入service层)
说明此类是个控制器类,开发者自定义一个Controller类实现Controller接口,配合@RequestMapping注解,可以在一个类中定义多个接口;在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面。若返回json等内容到页面,则需要加@ResponseBody注解
@RestController
相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
@Service (注入dao层)
说明此类是个服务类,标注在实现类上,@Service
是把spring
容器中的bean
进行实例化,也就是等同于new
操作
@Repository (实现dao访问)
说明此类是个数据访问层类,
@Component
标注一个类为Spring容器的Bean,(把普通pojo实例化到spring容器中,相当于配置文件中的
@RequestMapping
用于处理请求地址映射,可用于类或方法上,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径,不用于类上则所有的路径都是绝对路径
@GetMapping
用于将HTTP get请求映射到特定处理程序
@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping
用于将HTTP post请求映射到特定处理程序
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@Autowired
是spring的注解,@resource是java的注解
如果更换ioc容器,前者用不了
可以对成员变量、方法和构造函数进行标注,来完成自动装配/依赖注入的工作,@Autowired是根据类型type进行自动装配/注入的
@Qualifier
可以出现任何@Autowired
能够出现的地方,与之配套使用。直接标注在@Autowired
注入的Bean上,为其明确指定注入某个。Bean@Qualifier(value=”xxx”)
@Resource
用来实现依赖注入,默认按byName自动注入
@ResponseBody
ResponseBody注解的作用是将controller的方法返回的对象 通过适当的转换器 转换为指定的格式之后,写入到response对象的body区(响应体中),通常用来返回JSON数据。
需要注意,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,它的效果等同于通过response对象输出指定格式的数据。
@RequestParam(“”)
在controller层@requestMapping结合使用,@RequestParam注解的 value 属性值必须对应上html表单中的元素name,否则直接报错400,因为required
属性默认为true
,不写将会使用默认值;
@RequestParam注解加上
required=false,尽管没对应上然而不会报错,而是获取值为
null;
若不使用@RequestParam注解,直接接收,则要求controller方法中的参数名称要跟form中name名称一致,使用该注解只是方便随意取参数名称,不过value属性还是要与name一致。
mybatis中@param(“”)
在dao、mapper层与@Repository结合使用,传递单个参数时不用,传递多个参数时最好使用,都不用也可以嘻嘻
mybatis xml文件中parameterType、resultType和resultMap
resultType属于自动映射到javabean,而resultMap是手动映射到Javabean的,其中简单的映射关系可以使用resultType,复杂映射关系的推荐使用resultMap。使用resultMap需要先在mapper.xml中定义resultMap。而resultType则无需定义。
parameterType:如果传入的参数类型大于1种,且参数个数大于等于2,不要写parameterType不然会报错;parameterType 不写也可以,mybatis会自动识别,但是为了规范代码可读性,可以写一下,嘻嘻
解析传入参数有2种 #{} 与${} :
“#”: 会把你传入的参数当成字符串解析,也就是你无论传入什么,都会被加上’’号
“$” : 你传入什么,就是什么