2.SpringBoot——常用注解

Controller层

//设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能
@RestController
//设置当前控制器方法(模块)的请求访问路径
@RequestMapping("/web/role")
//依赖注入/自动装配,获取Bean
@Resource
@Autowired

Autowired和Resource的区别

两者作用相当,都是依赖注入,@Autowired是Spring中的注解,@Resource属于Java EE。

默认情况下@Autowired是按照类型byType注入的;@Resource默认按照名称byName注入。

@Autowired如果要按照类型注入,需要使用@Qualifier一起配合。而@Resource如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。

推荐使用@Resource,装配顺序更为简单,更快,且属于Java EE,减少与Spring的耦合。

HTTP请求

//GET请求,从服务器获取资源
@GetMapping
//POST请求,传递对象参数时使用
@PostMapping
//DELETE请求,删除
@DeleteMapping

前后端参数传递

//放方法参数的前面,用于接收JSON数据,常搭配@PostMapping
@RequestBody
//用于接收URL地址传参或表单传参的key-value格式的数据
@RequestParam
//接收路径参数,使用{参数名}描述路径参数
@PathVariable
//json格式返回结果给前端
@ResponseBody

Model(Entity)层

//Lombok注解
@Data

JSON格式处理

//属于jackson,将日期类型数据在JSON格式和java.util.Date对象之间转换。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//是Spring所有,对Date、Calendar、Long及Joda时间类型的属性进行格式化处理
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

@JsonFormat和 @DateTimeFormat 区别

@JsonFormat可以约束前端传入的时间类型参数格式可以约束后端响应前端的时间类型格式;与请求的数据类型有关,必须为json类型。

@DateTimeFormat只能约束前端传入的时间类型参数格式

参数校验

//非空
@NotBlank(message = MessageConstant.CARD_DID_IS_NOT_EMPTY
          , groups = {CompanyReq.CreateCompanyGroup.class)
public interface CreateCompanyGroup {
    }
//非空
@NotNull(message = MessageConstant.CARD_DEVICE_TYPE_IS_NOT_EMPTY)
//SpringMVC提供的,标注方法参数需要校验
@Validated(CompanyReq.CreateCompanyGroup.class)
//
@Min
//
@Max
//
@Size(max = 150, message
      = MessageConstant.RETROACTIVE_APPLY_APPLY_REASON_OVER_MAX_SIZE)
//
@Pattern(regex=,flag=)

Service层

//注册业务实现的Bean,Bean处理
@Service
//打日志
@Slf4j
//通用,不好归类的组件放入IOC容器里,一般共用的类会用上这个注解
@Component
//声明配置类
@Configuration

@Component(更常用)和@Bean的区别

都是注册Bean到IOC容器当中,通过@Resource注入(装配)。

@Bean在配置类中使用,即类上需要加上@Configuration注解。

@Configuration
public class MyBeans {
    
    @Bean
    public UserService userServiceImpl() {
        return new UserServiceImpl();
    }
}

若要将第三方库中的类注册到IOC容器里,在这种情况下,是没有办法在它的类上添加@Component注解的,只能通过@Bean实现。

读取配置

//直接读取各种配置的属性值
@Value
//读取配置信息并加载到Java配置类里,通过类获取对应属性
@ConfigurationProperties

测试

//声明一个方法为测试方法
@Test
//被声明的测试方法的数据会回滚,避免数据污染
@Transactional
@Transactional(rollbackFor = Exception.class)

DAO(Mapper)层

//注册持久层的Bean
@Mapper
@Repository

Mapper和Repository的区别

@Repository是Spring 的,@Mapper是mybatis的。都是注入DAO接口

如果使用@Repository注解,那么启动类上还需要配合@MapperScan配置扫描类。

@Mapper注解不需要配置MapperScan,通过xml里面的namespace里面的接口地址,生成bean对象后即可注入到Service里面。如果不在dao的接口上添加@Mapper,可以在启动类上添加@MapperScan("")指明扫描的位置。

还有一种注入DAO接口的方式:

在MybatisPlus的配置文件里加入@MapperScan,指定扫描DAO的路径。

此外:

当mapper接口和接口对应的xml映射文件在命名上不同或所在的路径不同时,需要在application配置xml路径,实现接口绑定。

mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/**/*Mapper.xml

以及:

mybatis中,映射文件中的namespace是用于绑定Dao接口,绑定接口后,便于定位指定SQL语句。

详细解释:在大型项目中,存在大量SQL语句,为每个SQL语句起一个唯一的标识(ID)不容易。为每个映射文件起一个唯一的命名空间,这样定义在这个xml文件中的每个SQL语句就成了定义在这个命名空间中的一个ID。所以只要能够保证每个命名空间中的ID是唯一的,即使在不同映射文件中的语句ID相同,也不会再产生冲突了。

配置启动

/**
 * 是SpringBoot的核心注解,它是一个组合注解。
 * @ComponentScan,告诉Spring扫描的包的位置,用注解标识的Bean会被Spring自动扫描并装入IOC容器当中。
 * @SpringBootConfiguration,它继承了@Configuration,标注配置类
 */
@SpringBootApplication
//Mybatis扫描DAO接口路径
@MapperScan(basePackages = {"com.leelen.cloud.office.*.mapper"})
//它是修饰Bean的一个注解,当bean被注册之后,如果有注册相同类型的bean,就不会成功,它会保证你的bean只有一个,即你的实例只有一个。可以用来修饰主启动类,以及自定义的配置类
@ConditionalOnMissingBean
//Nacos服务发现
@EnableDiscoveryClient
posted @   上瘾了  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示