admin管理员组

文章数量:1794759

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

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

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

    本文标签: 注解区别常用SpringBootMapperScan