1. Application启动类上:
@MapperScan(basePackages={"csdn**dao"}):【作用在Spring主程序,是指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类。括号内同时可以添加多个包。】
@SpringbootApplication():等同于@SpringbootConfiguration【表示的是该类会作为Springboot的一个配置类;等同于spring的XML配置文件】 + @EnableAutoConfiguration【开启自动配置功能】 + @ComponentScan【让spring Boot扫描到Configuration类并把它加入到程序上下文。可自动发现和装配一些Bean】三个配置。
@EnableDiscoveryClin:【1、可以获取服务信息;2、用于向eureka,consul或者zookeeper等作为注册中心的时候提供注册服务,让注册中心能够发现扫描到该服务。】
@EnableAsync:【启用Spring的异步方法执行功能;在方法上标注@Async注解,使得该方法进行异步执行,加入线程池运行】
@EnableScheduling:【在类上开启对定时任务的支持;在方法上用@Scheduled来申明这是一个任务】
@ImportResource(classpath:csdn.xml):【用于导入Spring的配置文件,让该配置文件中定义的bean对象加载到Spring容器中】
@ServletComponentScan:【作用:Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册】
@EnableDubbo:【整合了三个注解@EnableDubboConfig、@DubboComponentScan、@EnableDubboLifecycle。整合了这三个注解】
2. Controller层下:
类上:
@Slf4j:【日志输出logger.info("");加入Lombok插件,pom文件加入依赖。省略自己private final Logger logger = LoggerFactory.getLogger(CSDN.class)】
@Controller:【后端控制器,与前端交互】
@ResponseBody:【将返回的结果解析为josn写入HTTP response body中;修饰类,修饰方法都可】
@Restcontroller:【相当于@ResponseBody+@Controller;视图解析器无法解析和返回jsp、html页面;适合所有方法返回值都是json数据】
@RequestMapping(value="/csdn/xxx"):【RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。】
@Api(value="/csdn",tags="博客"):【属于swagger里的注解;用在请求的类上,表示对类的说明:@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response =“接口返回参数类型”, notes = “接口发布说明”);其他参数可参考源码;】
@ControllerAdviceweb:【是Controller增强器,作用是给Controller控制器添加统一的操作或处理。 1.结合@ExceptionHandler即可实现全局异常捕获 2.搭配@ModelAttribute注解可以做数据绑定,在到达控制器前,将属性放入modelMap中,可以通过name属性指定数据在map中的key,如果不指定的话,有相同返回类型会产生覆盖,建议每个都通过name参数指定key】
类中:
@Resource()
@Autowired
@Value("${csdn}")
方法上:
@PostMapping(Value="csdn")
@ResponseBody
@RequestMapping(value="/csdn/xxx")
@ApiOperation(value="",notes="")
@Monitor(serviceName="",serviceCode="")
@InitBinder()
web端异常处理(@ResponsBody,@ExceptionHandler)
方法中:
@PathVariable:
@RequestParam:
@RequestBody:【表示方法接收参数类型为 :json形式的 】
@ApiParam(name="",value="")
3. interface接口:
接口上:
@Repository
@Mapper(componentModel="spring"):作用在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类;如果想要每个接口都要变成实现类,那么需要在每个接口类上加上@Mapper注解,比较麻烦,解决这个问题用@MapperScan
@Target(ElementType.CSDN):【作用:指定注解的作用目标范围,一般用于自定义注解接口上;@Target(ElementType.TYPE)——接口、类、枚举、注解 ElementType.FIELD——字段、枚举的常量;ElementType.METHOD——方法;ElementType.PARAMETER——方法参数;ElementType.LOCAL_VARIABLE——局部变量;ElementType.ANNOTATION_TYPE——注解;ElementType.PACKAGE——包】
@Retention(RetentionPolicy.RUNTIME):【作用:注解的保留位置;当前这种类型将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用】
方法中:
@param
4. ServiceImpl层下:
类上:
@Service("csdn")
@Component("csdn")
类中
@Resource
@Autowired
@Vakue("${csdn}")
方法上
@Override
@Transactionl(rollackFor=csdn.class)
5. DAO层:
DTO类:
类上:
@Accessors(chain=true)
@Data :(使用Lombok插件)等于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor
@ApiModel
枚举类:
@AllArgsConstructor>:【lombok注解使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数】
方法上:
@ApiModelProperty(value="csdn")
属性上:
@JSONField(alternateNames={"csdn","csdn"})
@XstreamAias(value="csdn"):【XStream是Java类库,使用XStream,我们可以把Java对象转换成XML,也可以将XML转换为Java对象。】
6. Util工具类
类上:
@UtilityClass:一般作用于工具类上。在使用@UtilityClass注解后,所有的方法和属性都会被加上static关键字,并且该类会创建一个私有的空参构造器。
@Scheduled:用于定时任务Spring提供。[详细描述](https://www.jb51.net/article/201373.htm)
1.(@Schedule注解的一个缺点:就是其定时时间不能动态更改,它适用于具有固定任务周期的任务,若要修改任务执行周期,只能走“停服务→修改任务执行周期→重启服务”这条路。)
2.(使用@Scheduled注意事项: ①.spring的注解@Scheduled 需要写在实现方法上; ②.定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true),不能指向任何的参数; ③.如果该方法需要与应用程序上下文的其他对象进行交互,通常是通过依赖注入来实现; ④.实现类上要有组件的注解@Component。)
7. Config配置以及组件类
类上:
@Configuration
@RefreshScope;【用来实现配置、实例热加载,即当配置变更时可以在不重启应用的前提下刷新bean中相关的属性值】
@EnableWebMvc
@EnableCaching
@EnableSwagger2
@EnableRedisHttpSession:【开启Session 共享功能拦截请求,将之前在服务器内存中进行 Session 创建销毁的动作,改成在 Redis 中创建】
方法上:
@Bean