Spring系列常用注解

一、用在启动类

1、@SpringBootApplication

来源:org.springframework.boot.autoconfigure.SpringBootApplication
作用:用来把启动类注入到容器中,定义容器扫描的范围
//scanBasePackages:指定扫描com.example包下的所有bean
@SpringBootApplication(scanBasePackages="com.example")

//scanBasePackageClasses:指定只扫描Person类:程序中只能加载Person类对应的bean
//@SpringBootApplication(scanBasePackageClasses=Person.class)

//exclude:指定要排除的类:不扫描Animal类
//@SpringBootApplication(scanBasePackages="com.example", exclude=Animal.class)

//excludeName:指定要排除的类的名字:不扫描Animal类
//@SpringBootApplication(scanBasePackages="com.example", excludeName="com.example.beans.Animal")

public class App {
    public static void main(String[] args) {
        ...
    }
}

2、@MapperScan

来源:org.mybatis.spring.annotation.MapperScan
作用:用来指定扫描Mapper类的包的路径
//扫描指定路径下的mapper类
@MapperScan("com.example")
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        ...
    }
}

3、@EnableDiscoveryClient

来源:org.springframework.cloud.client.discovery.EnableDiscoveryClient
作用:能够让注册中心能够发现,扫描到该服务
同类:@EnableEurekaClient:作用一样但只能使用在Eureka作为注册中心的场景
//autoRegister = false:关闭自动注册服务,关闭后默认不会注册服务,可以手动开启。默认是true
//@EnableDiscoveryClient(autoRegister = false)

@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调用,不需要写实现类)
//1、启动类开启Feign客户端
@EnableFeignClients
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        ...
    }
}

//2、定义Feign远程,映射远程地址
@FeignClient(name = "saasbasic", path = "saasbasic/", url = "http://127.0.0.1:8080/")
public interface OrderRemoteService {
    /**
     * 根据企业编号查询企业信息
     * @return 工单编码
     */
    @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);
}

//3、使用
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";
	}
	
	//使用method属性指定请求方式
	@RequestMapping(path = "/login2", method=RequestMethod.POST)
	public String login() {
		return "post";
	}
	
	//使用占位符,请求的方法必须为GET
	@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类。见上
//指定注册的bean名称,不指定的话就是首字母小写的类名。
@Service("userService")
public class UserServiceImpl extends UserService{
}

2、@Autowired、@Resource

来源:
作用:用来装配bean. 都可以写在字段上,或写在setter方法上。
区别:
	1、@Autowired默认按类型装配、@Resource默认安照名称进行装配
	2、@Autowired属于spring、@Resource属于J2EE
建议@Resource注解在字段上,其它地方用@Autowired
//指定注册的bean名称,不指定的话就是首字母小写的类名。
@Service("userService")
public class UserServiceImpl extends UserService{
	@Autowired
	UserServiceMapper userServiceMapper;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值