1、@ResponseBody
如果返回的是字符串则将返回的内容直接放入response 的 body中给用户直接显示。如果返回的是对象则自动的转为JSON串。
public class tController { @ResponseBody @RequestMapping public String toPin(){ return "word"; } }
2、@RestController 和 @RequestMapping
@RequestMapping 注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到指定的方法。
@RestController 注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。其作用相当于@Controller+@ResponseBody组合
1 @RestController 2 public class tController { 3 //@ResponseBody 4 @RequestMapping 5 public String toPin(){ 6 return "word"; 7 } 8 }
注意:@RestController和@RequestMapping这两个注解不是SpringBoot特有的。应该说是属于SpringMVC的注解。
3、@SpringBootApplication
主要用来注解SpringBoot的main类(唯一入口类)。
该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。
1 @SpringBootApplication 2 public class Application { 3 public static void main(String[] args) { 4 SpringApplication.run(Application.class, args); 5 } 6 }
4、@Configuration
@Bean
@ConfigurationProperties(prefix="..")
Configuration 标识该类为一个bean的容器 ;
Bean 调用该方法产生一个bean;
ConfigurationProperties(prefix="pr") 扫描外部资源文件中的前缀包含pr的值注入到指定的类中
1 /** 2 * Configuration 标识该类为一个bean的容器 3 * 4 * 5 * @author Administrator 6 */ 7 @Configuration 8 public class BeanContainer { 9 10 /** 11 * @Bean 12 * 调用该方法产生一个bean 13 * 方法名 就是 id; 14 * 15 * @ConfigurationProperties(prefix="dbcpsource") 16 * 自动扫描资源文件 并且将资源文件中前缀包含"dbcpsource"的四要素 17 * 自动填充到BasicDataSource中; 18 * 19 * @return 20 */ 21 @Bean 22 @ConfigurationProperties(prefix="dbcpsource") 23 public DataSource dataSource(){ 24 BasicDataSource dataSource = new BasicDataSource(); 25 return dataSource; 26 } 27 }
5、@ControllerAdvice
@ExceptionHandler(Exception.class)
ControllerAdvice 表示统一处理异常;包含了@Component;
ExceptionHandler 表示遇到异常就执行该方法。注解用于方法上。
1 /** 2 * 全局异常处理 3 */ 4 @ControllerAdvice 5 class GlobalDefaultExceptionHandler { 6 public static final String DEFAULT_ERROR_VIEW = "error"; 7 8 @ExceptionHandler({TypeMismatchException.class,NumberFormatException.class}) 9 public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception { 10 ModelAndView mav = new ModelAndView(); 11 mav.addObject("error","参数类型错误"); 12 mav.addObject("exception", e); 13 mav.addObject("url", RequestUtils.getCompleteRequestUrl(req)); 14 mav.addObject("timestamp", new Date()); 15 mav.setViewName(DEFAULT_ERROR_VIEW); 16 return mav; 17 }}
6、@MapperScan("cn.com.venus.oa.mapper")
1 @SpringBootApplication 2 @MapperScan("cn.com.venus.oa.mapper") 3 public class venusAppcliation { 4 public static void main(String[] args) { 5 SpringApplication.run(venusAppcliation.class, args); 6 } 9 }
7、@Transactional
标识该类中所的方法都使用事务。
8、@Component
标识该类交给Spring管理。在无法区分该类属于那一层时可以使用该注解
9、@Autowired
标识完成自动装配工作。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。
10、@RequestParam
一般用在方法的参数前面;在Controller层,接收前台传过来的参数名与前台的‘name’值不一致时可以使用。
该注解与request.getParameter("name")的效果一致都是获取前台传过来的值。
@RequestParam(value="name",required=false,defaultValue="0");
value:标识前台的name值,必须一致,不然会报400的错;
required:false/true两个值;false表示可以不传,自动给个默认值null,但是若穿过来的是个int的基本类型而后台设置为null这样同样会400;true表示必须传值,不能为空,否则报400;
defaultValue:表示默认值。若没有传值的话就会以默认值参数的值。
11、@PathVariable
匹配路径变量;一般在RestFul路径时匹配路径上的数据变量值,即从路径上获取变量值。
1 @RequestMapping("/{moudelName}/Left") 2 public String sysadminLeft(@PathVariable() String moudelName){ 3 return "/"+moudelName+"/left"; 4 }
12、@Param
表示注解单一属性。在Mybatis中使用。一般用来注解多个参数自动封装到一个Map中,Param的参数就是map中的key。
//在Mybatis的Mapper接口类中的方法 public void updateState(@Param("deptId")String[] deptIds, @Param("state")int stopState);
对应的xml映射文件:
1 <!-- 部门状态修改至停用 --> 2 <update id="updateState" > 3 update dept_p set state=#{state} where dept_id in( 4 <foreach collection="deptId" item="deptId" separator=","> 5 #{deptId} 6 </foreach> 7 ) 8 </update>
注意:
1.使用@Param注解
当你使用了使用@Param注解来声明参数时,在映射文件中使用 #{} 或 ${} 的方式取值都可以。
@Select("select * from dept_p where dept_id = ${deptId} ")
public int selectdept(@Param("deptId") int deptId);
当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。
2.不使用@Param注解
不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
// 这里id是user的属性
@Select("select* from user_p where id = ${id}")
Enchashment selectUserById(User user);
13、@Value
给基本类型属性实现注入;
yml配置:
1 id: 1 2 name: 大飞 3 age: 18
pojo对象:通过@Value注解将配置文件中的值实现注入到指定属性中。
1 @Component 2 public class User(){ 3 4 @Value("${id}") 5 private Integer id; 6 7 @Value("${name}") 8 private Integer name; 9 10 @Value("${age}") 11 private Integer age; 12 13 }
给属性赋值固然不知这一种方法也可以通过@ConfigurationProperties(prefix="userPro")(本文的第4条)注解,然后在yml配置中设置相应的值进行注入。
yml配置:配置成树形结构
1 userPro: 2 id: 1 3 name: 大飞 4 age: 18
pojo对象类:这种方法也可以对复杂类型进行注入。
1 @Component 2 @ConfigurationProperties(prefix="userPro") 3 public class User(){ 4 5 private Integer id; 6 7 private Integer name; 8 9 private Integer age; 10 11 }