一、用在启动类
1、@SpringBootApplication
来源:org.springframework.boot.autoconfigure.SpringBootApplication
作用:用来把启动类注入到容器中,定义容器扫描的范围
@SpringBootApplication(scanBasePackages="com.example")
public class App {
public static void main(String[] args) {
...
}
}
2、@MapperScan
来源:org.mybatis.spring.annotation.MapperScan
作用:用来指定扫描Mapper类的包的路径
@MapperScan("com.example")
@SpringBootApplication
public class App {
public static void main(String[] args) {
...
}
}
3、@EnableDiscoveryClient
来源:org.springframework.cloud.client.discovery.EnableDiscoveryClient
作用:能够让注册中心能够发现,扫描到该服务
同类:@EnableEurekaClient:作用一样但只能使用在Eureka作为注册中心的场景
@EnableDiscoveryClient
@SpringBootApplication
public class App {
public static void main(String[] args) {
...
}
}
4、@EnableFeignClients、@FeignClient
来源:org.springframework.cloud.openfeign.EnableFeignClients
作用:启动FeignClient,以支持Feign
(提供url调用eureka中对应name的服务,默认使用http调用,不需要写实现类)
@EnableFeignClients
@SpringBootApplication
public class App {
public static void main(String[] args) {
...
}
}
@FeignClient(name = "saasbasic", path = "saasbasic/", url = "http://127.0.0.1:8080/")
public interface OrderRemoteService {
@RequestMapping(value ="/system/bill/v1/genOrderNum/?areaId={areaId}&billType={billType}",method = RequestMethod.GET)
GlobalResponse genOrderNum(@RequestHeader("companyCode") String companyCode, @PathVariable("areaId")String areaId , @PathVariable("billType") Integer billType);
}
GlobalResponse Response = orderRemoteService.genOrderNum(132456789,"778899" , 1006);
二、用在Controller
1、@RestController、@Controller
来源:org.springframework.web.bind.annotation
作用:@RestController = @Controller + @ResponseBody组成
@Controller:将当前修饰的类注入SpringBoot IOC容器
@ResponseBody:当前类返回的数据类型包装成Json字符串,String则依旧返回String
@RestController
public class UserController {
}
2、@RequestMapping
来源:org.springframework.web.bind.annotation
作用:指定控制器可以处理哪些URL请求,可以在类和方法上使用
属性:value:指定请求的实际地址。
method:指定请求的method类型(GET,POST,PUT,DELETE)等。
consumes:指定处理请求的提交内容类型(Context-Type)。
produces:指定返回的内容类型,还可以设置返回值的字符编码。
params:指定request中必须包含某些参数值,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才让该方法处理请求。
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login1")
public String login() {
return "success";
}
@RequestMapping(path = "/login2", method=RequestMethod.POST)
public String login() {
return "post";
}
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public String show(@PathVariable("id") Integer id) {
return "success";
}
}
3、@PostMapping、@GetMapping
来源:org.springframework.web.bind.annotation
说明:都是RequestMapping的变体,例如:@RequestMapping(method = RequestMethod.GET)
@PostMapping:处理post请求。从Body里面拿数据。
@GetMapping:处理get请求。从URL中直接获取数据。
@PutMapping:和PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。两者差别不是很明显。
@DeleteMapping:执行删除方法的URL映射。
@PatchMapping:对put方式的一种补充,put方式是整体的更新,patch是对局部更新。
三、用在ServiceImpl
1、@Service、@Component
来源:org.springframework.stereotype
作用:当前类注册到Spring容器
注意:注解加在Service的实现类上,不加在Service上,原因是Spring不可以管理接口。
类似:
@Component:Controller、Repository、Service的通用注解,可以替代其它三个。一般用在非Controller和Service的其他类上。
@Repository:用在持久层的接口上,一般不用。
@Controller:一般用于声明Service类。见上
@Service("userService")
public class UserServiceImpl extends UserService{
}
2、@Autowired、@Resource
来源:
作用:用来装配bean. 都可以写在字段上,或写在setter方法上。
区别:
1、@Autowired默认按类型装配、@Resource默认安照名称进行装配
2、@Autowired属于spring、@Resource属于J2EE
建议@Resource注解在字段上,其它地方用@Autowired
@Service("userService")
public class UserServiceImpl extends UserService{
@Autowired
UserServiceMapper userServiceMapper;
}