SpringBoot注解详解

一、@SpringBootApplication详解

         对启动一个springboot服务所需注解进行包装,其中必须注解为:
                                             @Configuration+@EnableAutoConfiguration+@ComponentScan

         用于对应用的主函数进行注解,使服务器自动扫描加载配置

 

二、@RequestMapping详解

        RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

       RequestMapping注解有六个属性:

  • value, method;
    value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
    method:  指定请求的method类型, GET、POST、PUT、DELETE等;
  •  consumes,produces;
    consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
    produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
  •  params,headers;
    params: 指定request中必须包含某些参数值是,才让该方法处理。
    headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

三、@RestController详解

        @RestController注解相当于@ResponseBody + @Controller合在一起的作用

         一般用于接口或前后端分离:
                 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp,html页面,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是return 里的内容。

@RestController
@RequestMapping("/TestController")
public class TestRestController{
 
    // 返回 return 里面的内容
    @RequestMapping(value = "index", method = RequestMethod.GET)
    public String index(){
        // 返回 return 里面的内容 如字符串 json xml 或自定义返回
        return "{}";
    }
}

         一般用于后台页面:
                 如果需要返回到指定页面,则需要用   @Controller  配合视图解析器   InternalResourceViewResolver   才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

@Controller
@RequestMapping("/TestController")
public class TestController{
     
    // 映射文件
    @RequestMapping(value = "index", method = RequestMethod.GET)
    public String index(){
        // 他就会映射到 TestController 目录下 index.jsp 或 index.html 文件
        return "TestController/index";
    }
 
    // 返回 return 里面的内容
    @RequestMapping(value = "index", method = RequestMethod.GET)
    @ResponseBody
    public String index(){
        // 返回 return 里面的内容 如字符串 json xml 或自定义返回
        return "{}";
    }
}

四、@EnableAutoConfiguration详解

         这个注释告诉SpringBoot“猜”你将如何想配置Spring,基于你已经添加jar依赖项。如果spring-boot-starter-web已经添加Tomcat和Spring MVC,这个注释自动将假设您正在开发一个web应用程序并添加相应的spring设置。

  自动配置被设计用来和“Starters”一起更好的工作,但这两个概念并不直接相关。您可以自由挑选starter依赖项以外的jar包,springboot仍将尽力自动配置您的应用程序。

  spring通常建议我们将main方法所在的类放到一个root包下,@EnableAutoConfiguration(开启自动配置)注解通常都放到main所在类的上面,下面是一个典型的结构布局:

com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java

           这样@EnableAutoConfiguration可以从逐层的往下搜索各个加注解的类,例如,你正在编写一个JPA程序(如果你的pom里进行了配置的话),spring会自动去搜索加了@Entity注解的类,并进行调用 

五、jackson处理相关自动

        指定字段不返回:@JsonIgnore
        指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
        空字段不返回:@JsonInclude(Include.NON_NUll)
        指定别名:@JsonProperty

package net.xdclass.demo.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Date;

public class User {



    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    private int age;
    @JsonIgnore//把该字段忽略掉,不将它添加到返回给客户端的json中
    private String pwd;

    public User(int age, String pwd, String phone, Date createTime) {
        this.age = age;
        this.pwd = pwd;
        this.phone = phone;
        this.createTime = createTime;
    }

    @JsonProperty("account")//对phone字段添加别名,以别名形式返回json给客户端
    @JsonInclude(JsonInclude.Include.NON_NULL)  //若该字段为空值就不会返回给前端
    private String phone;
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",locale = "zh",timezone = "GMT+8")//对日期进行格式化
    private Date createTime;

}

六、@Bean详解

   @Bean 用在方法上,告诉Spring容器,你可以从下面这个方法中拿到一个Bean

   Bean是啥:

  • 1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);
  • 2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;
  • 3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;
  • 4、把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
  • 5、我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean或者给出一个Bean
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) throws Exception{
        SpringApplication.run(FileController.class,args);
    }

    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //单个文件最大
        factory.setMaxFileSize("10240KB"); //KB,MB
        /// 设置总上传数据总大小
        factory.setMaxRequestSize("1024000KB");
        return factory.createMultipartConfig();
    }
}

七、@MapperScan详解

          什么是通用Mapper:通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。

         @MapperScan作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加。

package net.myclass;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("net.mycalss.mapper")
public class MyApplication {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(MyApplication.class, args);
    }
}

添加@MapperScan(“net.mycalss.mapper”)注解以后,com.winter.dao包下面的接口类,在编译之后都会生成相应的实现类

使用@MapperScan注解多个包

@SpringBootApplication  
@MapperScan({"com.kfit.demo","com.kfit.user"})  
public class App {  
    public static void main(String[] args) {  
       SpringApplication.run(App.class, args);  
    }  
}  

八、@Component注解详解

          @Component是一个元注解,意思是可以注解其他类注解,如@Controller @Service @Repository @Aspect。官方的原话是:带此注解的类看为组件,当使用基于注解的配置和类路径扫描的时候,这些类就会被实例化。

@component (把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>)

          当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类

Spring Boot 是一个开源的 Java 框架,它简化了 Spring 应用程序的开发过程。在 Spring Boot 中,注解是一种重要的方式,用于配置和管理应用程序的各个组件。下面是一些常用的 Spring Boot 注解详解: 1. @SpringBootApplication: 该注解用于标记主类,表示这是一个 Spring Boot 应用程序的入口点。它包含了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 注解。 2. @Controller: 该注解用于定义一个 MVC 控制器类,处理来自客户端的请求,并返回响应。 3. @RestController: 该注解是 @Controller 和 @ResponseBody 的组合,用于定义 RESTful 风格的控制器类。 4. @RequestMapping: 该注解用于映射 HTTP 请求到控制器的处理方法上。可以用于类级别和方法级别。 5. @Autowired: 该注解用于自动装配 Spring 容器中的 Bean 对象。可以用于构造器、属性、方法和参数上。 6. @Component: 该注解用于标记一个类为 Spring 管理的组件。它是一个泛化的概念,包括了 @Repository、@Service 和 @Controller 注解。 7. @Configuration: 该注解用于标记一个类为配置类,类似于传统的 XML 配置文件。可以使用 @Bean 注解在配置类中定义 Bean 对象。 8. @EnableAutoConfiguration: 该注解用于启用自动配置机制,Spring Boot 会根据项目的依赖自动配置相应的 Bean 对象。 9. @EnableWebMvc: 该注解用于启用 Spring MVC 配置,如果需要自定义 Spring MVC 的配置,可以使用该注解。 10. @Value: 该注解用于注入配置文件中的属性值到对应的字段或方法参数上。 这些是常用的 Spring Boot 注解详解,通过使用这些注解,可以简化开发过程,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值