在最开始spring全部的注入方式都是以XML文件的方式注入,但随着spring的更新,人们逐渐发现这种方式比较繁琐,在后来的版本中,使用着XML和注解结合的方式进行配置,再后来,当注解越来越完善时,Spring已经可以用全注解的方式进行所有配置
当然,想要用到全注解配置也是有一定的门槛的——首先,得知道各种配置的用处:自然,知道才能使用
Bean
Bean容器是贯穿Spring的一个很重要的概念,先看一下和Bean相关的一些Spring注解
@Autowired
将对象导入到当前类中,将对象交给Spring容器进行管理,被注入的类同样也需要交给Spring容器进行管理
例子:
将一个Service类注入到Controller
@Service
public class Service{
}
public class Controller{
@Autowired
private Service service;
}
@Repository
注解Dao层,主要用于数据库的一些相关操作
例子:
@Repository
public class Dao{
}
@Service
注解服务(service)层,主要有一些逻辑,和Dao层联系
例子:
@Service
public class Service{
}
@Controller
主要spring控制层,可接收用户请求,调用Service并返回数据给前端
例子:
@Controller
public class Controller{
}
@Component
可标注任意类为Spring的组件,若一个类不知道是上面哪层,那么便可以使用@Conponent注解进行标注
@RestController
@RestController是@Controller和@ResponseBody的结合,是一个控制器,并且返回JSON或者XML类型数据,而不是直接返回视图
@Scope
声明Bean的作用域
常见的四种Bean的作用域
singleton:单例bean,Spring中的Bean默认都是单例的
prototype:每次请求都会创建一个新的bean实例
request:每一次HTTP请求都会创建一个新的bean实例,该bean在当前request内有效
session:每一次HTTP请求都会创建一个新的bean实例,该bean在当前session内有效
例子:
@Bean
@Scope("singleton")
public User userSingleton(){
return new User();
}
HTTP
@RequsetMapping()
是一个处理请求地址映射的注解,用于类或者方法上
有以下属性:
value:指定请求的地址
method:指定请求的method类型
consumes:指定处理请求的提交内容类型
produces:指定返回的内容类型
params:指定请求中需要的某些参数值
headers:指定请求中必须有的某些header值
@RequestMapping("/bill")
public class BillController {
@RequestMapping("/list")
public String list(Bill b , Model model){
return "/bill/list";
}
}
@GetMapping
从服务器获取资源
method为GET的RequestMapping
@GetMapping(“user”)
相当于
@RequestMapping(value="/user",method=RequestMethod.GET)
@PostMapping
服务器上创建一个新的资源
method为POST的RequestMapping
@PostMapping(“user/{id}”)
相当于
@RequestMapping(value="/user/{id}",method=RequestMethod.POST)
@PutMapping
更新服务器上的资源
method为PUT的RequestMapping
@PutMapping(“user”)
相当于
@RequestMapping(value="/user",method=RequestMenthod.PUT)
@DeleteMapping
从服务器删除特定的资源
method为DELETE的RequestMapping
@DeleteMapping("/user/{id}")
相当于
@RequestMapping(value="/user/{id}" , method=RequestMethod.DELETE)
传值
@PathVariable
获取路径的参数
例子
@GetMapping("/user/{id}")
public int getId(@PathVariable("id") long id){
return id;
}
其中id就是URL中的id
@RequestBody
读取Request请求的body并且读取其中的JSON数据为对象
例子
@PostMapping("/sign")
public User sign(@ResponseBody User user){
return user;
}
当发送请求到这个方法,且其中携带JSON数据,如
{“username”:“hhw”,“password”:“123456”}
时,就可以直接把JSON数据映射到类中
先到这里吧,以后有新认识的注解也可以加入其中,不定时更新