springboot常用注解精简总结&@Mapper@MapperScan的区别和用法

本文深入解析SpringBoot中关键注解的使用与原理,包括@SpringBootApplication、@ComponentScan、@Configuration、@EnableAutoConfiguration等,阐述了它们在项目启动、配置扫描、自动配置等方面的作用,同时介绍了@Value、@PropertySource、@Component、@ConfigurationProperties等注解在属性注入方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. @SpringBootApplication :启动类。项目启动的入口(默认必须在最外层目录)
  2. @ComponentScan : 配置扫描路径
  3. @Configuration :配置spring容器(应用上下文)
  4. @EnableAutoConfiguration :启用自动配置
  5. @Value:基本属性值注入
  6. @PropertySource:自定义配置文件
  7. @Component/@ConfigurationProperties(prefix = “”):对象值注入
  8. @Mapper:添加了@Mapper注解之后这个接口在编译时会生成相应的实现类。
    会自动的把 @Mapper 注解的接口生成动态代理类.
  9. @RestController:将类注入到spring的IOC容器中,类中接口返回的数据(除了String)以JSON返回
  10. @PostMapping / @GetMapping:替换了@RequestMapping中的method = RequestMethod.POST/GET
  11. @reference 是 dubbo 的注解,用于消费端,表明使用提供端的某种服务。
  12. @EnableDubboConfiguration:启动类加,@EnableDubboConfiguration在生产端和消费端都加上此注解来表示使用dubbo服务

@RestController

@RestController包含@Controller和@ResponseBody

@RestController和@Controller的区别是 RestController的方法不能返回到jsp页面
@ResponseBody 的作用就是将java对象转成json格式的数据

@Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用
@ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端,本人尝试了一下,如果返回的是String类型,则仍然是String。

@RestController
@RequestMapping("test")
public class SampleController {

    @GetMapping
    public Map testGet() {
        return new HashMap<String, String>(){{
           put("name", "springboot");
        }};
    }

    @GetMapping(path = "str")
    public String testGetStr() {
        return "OK";
    }
}

这部分代码对于Map返回则是JSON String,对于String则仍然是String

@ConfigurationProperties

可以将外部配置文件(比如applicaition.properties)加载进来,填充对象的对应字段的数据,然后供其他Bean使用。
prefix 前缀定义了哪些外部属性将绑定到类的字段上.

@Mapper和@MapperScan

@Mapper 一般我们用在接口上,使用 @Mapper,最终 Mybatis 会有一个拦截器,会自动的把 @Mapper 注解的接口生成动态代理类。代码如下:

@Mapper
public interface UserDAO {
    @Select("select * from user where name = #{name}")
    User find(String name);
    @Select("select * from user where name = #{name} and pwd = #{pwd}")
    /**
      * 对于多个参数来说,每个参数之前都要加上@Param注解,
      * 要不然会找不到对应的参数进而报错
      */
    User login(@Param("name")String name, @Param("pwd")String pwd);
}

@Mapper 注解针对的是一个一个的类,相当于是一个一个 Mapper.xml 文件。
而一个接口一个接口的使用 @Mapper,太麻烦了,于是 @MapperScan 就应用而生了。
@MapperScan 配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类。

@SpringBootApplication  
@MapperScan({"com.xttblog.mapper","com.xttblog.dao"})
public class XttblogApp {  
    public static void main(String[] args) {  
       SpringApplication.run(XttblogApp.class, args);  
    }  
}


使用@MapperScan注解
通过使用@MapperScan可以指定要扫描的Mapper类的包的路径,比如:
(模糊匹配)
@SpringBootApplication
@MapperScan(“com.kfit.*.mapper”)
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值