未来框架的趋势是“约定大于配置”,代码的封装会越来越严密。开发人员只需将精力放到代码逻辑编写和整体代码优化上,所以注解式变编程将会广泛的使用。
什么是注解式编程
注解一般用来定义一个类,属性或者是方法,以便程序能够编译运行,他相当于一个说明文件,告诉程序某个被注解的类或者属性是什么,该如何处理。注解可以用于标注包,类,方法,和变量等。
常用的系统注解
@Override 用于修饰方法,表明此方法重写了父类方法。
@Deprecated 用于修饰方法,表明此方法已经过时,一般伴随着版本升级会遇到。
@SuppressWarnnings 告诉编译器忽略某些警告。
使用在类名上的注解
@RestController 作用相当于@ResponseBody加上@Controller一起使用。
@RestController
public class HelloController{
@RequestMapping("/hello")
public String hello(){
return "hello,springboot";
}
}
@Controller 声明此类是个SpringMVC Controller对象。
下面的代码与@RestController中的代码是等效的。
@Controller
public class HelloController{
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "hello,springboot";
}
}
@Service 声明一个业务处理类,用于标注服务层,处理业务逻辑。
@Reponsitory 声明数据库访问类,用于标注数据访问层。
@Component 代表是Spring管理类,它用于把普通的POJO实例化到Spring容器中,当类不属于@Service或者@Controller等时,可以使用@Component来标注,相当于通用的注解。
@Configuration 声明该类是个配置类,常和@Bean搭配使用,并且可以被Spring容器自动处理。他作为Bean的载体,用来指示一个类声明,一个或者多个@Bean方法。
@Resource @Resource和@Autowired都可以用来装配Bean,用来进行依赖注入,也都可以写在字段上或者Setter方法上。
//作用在变量上
public class HelloController{
@Resource
private HelloController hellocontroller;
}
//作用在方法上
public class HelloController{
@Resource(name="xxxDao")
public void setXxxDao(XxxDao xxxDao) {
this.xxxDao = xxxDao;
}
}
@Autowired 他表示被修饰的类需要注入对象,是Spring提供的注解,只能通过byType的方式自动注入。Spring会扫描所有被@Autowired标注的类,然后根据类型在IoC容器中找到匹配的类进行注入。被@Autowired注解的类不用再导入文件。
//作用在变量上
public class HelloController{
@Autowired
private HelloController hellocontroller;
}
//作用在方法上
public class HelloController{
@Autowired
public void setXxxDao(XxxDao xxxDao) {
this.xxxDao = xxxDao;
}
}
@RequestMapping 用来处理请求地址映射,用在类或方法上,如果作用在类上,则表示类中所有响应请求的方法都是以该地址作为父路径。可以参考@RestController中的代码,
@Qualifier 用于标注哪一个实现类才是需要注入的,@Qualifier的参数名称为被注入的类中的注解@Service标注的名称。@Qualifier常和@Autowired一起使用。
@Autowired
@Qualifier("articleService")
//@Resource和他不同,@Resource自带name属性。
使用在方法上的注解
注解 | 使用位置 | 注解说明 |
---|---|---|
@RequestBody | 方法参数前 | 常用来处理JSON/XML格式的数据,将接收到的数据转换为指定类型参数。 |
@PathVariable | 方法参数前 | 用于获取路径中的参数,将URL获取的参数映射到方法参数上。 |
@Bean | 方法上 | 声明该方法的返回结果是个由Spring管理的Bean。 |
@ResponseBody | 方法上 | 通过转换器将控制器中方法返回的对象转换为指定数据类型,然后写入Response对象的body数据区。 |
@RequestBody
例如用AJAX提交数据,然后控制器接收数据。
$.ajax{
url:"/post",
type:"POST",
data:'{"name":"zhangsan"}',
contentType:"application/json charset=utf-8",
success:function(data){
alert("success!");
}
}
@RequestMapping("/post")
public void post(@RequestBody String name){
//代码块
}
@ResponseBody
使用此注解后,数据直接写入输入流中,不要进行视图渲染。
@GetMapping("/test")
@ResponseBody
public String test(){
return "test";
}
结尾
这里只列举了一些常用的注解,Spring Boot还有很多注解,在以后的项目开发中可以慢慢学习。