SSM+SpringBoot注解大全

Spring框架中注解的使用包括:@Component、@Controller、@Service、@Repository等用于组件扫描和实例化;@Bean表示方法返回值存入容器;@Import引入配置类;@Autowired、@Resource、@Inject进行自动注入;@Scope定义Bean的作用域;@Entity、@Table、@Id等用于数据持久层注解;@PostConstruct、@PreDestroy定义初始化和销毁方法;@EnableWebMvc、@EnableAsync等开启特定功能;@SpringBootApplication启动注解;@PathVariable、@RequestParam等用于处理HTTP请求参数。

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

Spring注解

单纯的Spring框架下,使用注解需要将其开启注解支持,在xml文件下添加如下标签

<context:component-scan base-package="xxx.xxx.**"></context:component-scan>
<context:annotation-config/>

给容器中注入组件

包扫描+组件标注注解


@Component

  • 把普通pojo实例化到spring容器中,相当于配置文件中的<bean/>标签
  • 作用在类上
  • Bean名称默认为当前类的类名,首字母小写
  • value参数可指定Bean名称
  • @Controller@Service@Repository都可以称为@Component,特性并于其一致

@Component、@Controller、@Service、@Repository

  • 表明当前类需要创建对象并且存入spring的ioc容器中
  • 在实例化时,首选默认无参构造函数。
  • 支持带参构造,前提是构造函数的参数依赖必须要有值,否则抛异常。
  • 在MVC开发中:@Controller在控制层使用,@Service在服务层使用,@Repository在持久层使用
  • value:用于指定存入容器时bean的id。当不指定时,默认值为当前类的名称首字母小写。

@Bean

  • 表示把当前方法的返回值存入spring的ioc容器
    • 作用在方法上
  • @Bean通常出现在Spring的配置类当中,注解在方法上, 也可以出现在注解上,作为元注解来使用
  • 参数解释
    • value:用于指定存入spring容器中bean的标识。支持指定多个标识。当不指定该属性时,默认值是当前方法的名称。
    • name:同value作用一样
    • autowireCandidate:用于指定是否支持自动按类型注入到其他bean中。只影响@Autowired注解的使用。不影响@Resource注解注入。默认值为true,意为允许使用自动按类型注入。
    • initMethod:指定Bean的初始化方法
    • destroyMethod:指定Bean的销毁方法
    • 支持别名:@Bean(“xx-name”)

@Import

  • 引入其他的配置类
  • 作用在类上
  • 通常都是和注解驱动的配置类一起使用。
  • 使用此注解之后,可以使我们的注解驱动开发和早期xml配置一样,分别配置不同的内容,使配置更加清晰、被引入的类上可以不再使用@Configuration,@Component等注解。
  • 以下为通常情况可以使用@Import注解导入的三种类
    • 导入@Configuration注解的配置类;
    • 导入ImportSelector的实现类;
    • 导入ImportBeanDefinitionRegistrar的实现类;
  • 如果需要导入其他类或者导入xml更推荐使用@ImportResource
  • 使用示例
    @SpringBootApplication
    @Import({SmsConfig.class})
    public class DemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

注入bean的注解

@Autowired

  • 自动按照类型注入
  • required是否必须注入成功。默认值是true,表示必须注入成功。当取值为true的时候,注入不成功会报错。
  • IOC容器中有且只有一个类型匹配时可以直接注入成功。
  • 当有超过一个匹配时,则使用变量名称(写在方法上就是方法名称)作为bean的id,在符合类型的bean中再次匹配,能匹配上就可以注入成功。

@Resource

  • 找到依赖的组件注入到应用中来
  • 此注解来源于JSR-250规范(Java Specification Requests),它利用了JNDI(Java Naming and Directory Interface Java命名目录接口 J2EE规范之一)技术查找所需的资源。
  • 装配方式:
    • 按照byType的方式装配bean对象(默认)
    • 指定了name,没有指定type,采用byName
    • 没有指定name,指定了type,按照byType装配bean对象
    • byName和byType都指定,都会校验,有任何一个不符合条件就会报错
  • 参数:
    • name:资源的JNDI名称。在spring的注入时,指定bean的唯一标识。
    • type:指定bean的类型。
    • lookup:引用指向的资源的名称。它可以使用全局JNDI名称链接到任何兼容的资源。
    • authenticationType:指定资源的身份验证类型。它只能为任何受支持类型的连接工厂的资源指定此选项,而不能为其他类型的资源指定此选项。
    • shareable:指定此资源是否可以在此组件和其他组件之间共享。
    • mappedName:指定资源的映射名称。
    • description:指定资源的描述。
    • 简单理解可以把@Resource当作@Autowired和@Qualifier的合体版。

@Inject

  • 用于建立依赖关系的。和@Resource@Autowired的作用是一样。
  • 在使用之前需要先导入坐标:
    @Target({ METHOD, CONSTRUCTOR, FIELD })
    @Retention(RUNTIME)
    @Documented
    public @interface Inject {
    }
    
    
    <!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>
    
  • @Inject来源于`JSR-330规范。(JSR330是Jcp给出的官方标准反向依赖注入规范。)
  • 不支持任何属性,但是可以配合@Qualifier或者@Primary注解使用。
  • 默认是采用byType装配,当指定了JSR-330规范中的@Named注解之后,变成byName装配。

@Qualifier

  • 当使用自动按类型注入时,遇到有多个类型匹配的时候,就可以使用此注解来明确注入哪个bean对象。
  • 注意: 它通常情况下和@Autowired注解一起使用
  • value:指定匹配Bean的名称

@Primary

  • 用于指定bean的注入优先级。被@Primary修饰的Bean对象优先注入

@Named

  • 通常配合@Inject使用,在自动注入时用来指定注入Bean的名称
  • value:要注入的Bean的名称

@Scope

  • 作用域注解
  • 用来配置 spring bean 的作用域,它标识 bean 的作用域
  • 作用在类上和方法上
  • 属性介绍
    value
        singleton   表示该bean是单例的。(默认)
        prototype   表示该bean是多例的,即每次使用该bean时都会新建一个对象。
        request     在一次http请求中,一个bean对应一个实例。
        session     在一个httpSession中,一个bean对应一个实例。
        
    proxyMode
        DEFAULT         不使用代理。(默认)
        NO              不使用代理,等价于DEFAULT。
        INTERFACES      使用基于接口的代理(jdk dynamic proxy)。
        TARGET_CLASS    使用基于类的代理(cglib)。
    

@Entity

  • 实体类注解

@Table(name =“数据库表名”)

  • 这个注解也注释在实体类上,对应数据库中相应的表。

@Id、@Column

  • 用于标注实体类中的字段,pk字段标注为@Id,其余@Column。

@JsonIgnore

  • 在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
  • 一般标记在属性或者方法上,返回的json数据即不包含该属性
  • 如果注解失效,可能是因为你使用的是fastJson,尝试使用对应的注解来忽略字段,注解为:@JSONField(serialize = false),使用方法一样。

初始化和销毁方法

  • 通过@Bean(initMethod="init",destoryMethod="destory")方法

  • 通过bean实现InitializingBean来定义初始化逻辑,DisposableBean定义销毁逻辑

  • 可以使用JSR250:
    @PostConstruct:初始化方法;
    @PreDestory:销毁方法。

  • BeanPostProcessor:bean的后置处理器,在bean初始化前后进行一些处理工作

  • postProcessBeforeInitialization:在初始化之前工作;

  • postProcessAfterInitialization:在初始化工作之后工作;

Java配置类相关注解

@Configuration

  • 表明当前类是spring的一个配置类。
  • 替代spring的applicationContext.xml
  • 其本质就是@Component注解,被此注解修饰的类,也会被存入spring的IOC容器
  • value:表名存入Spring容器中的Bean的ID。
  • 它是在spring3.0版本之后加入的。此注解是spring支持注解驱动开发的一个标志。

@ComponentScan

  • 用于指定创建容器时要扫描的包
  • spring4.3版本之后还加入了一个@ComponentScans的注解,该注解可以支持配置多个@ComponentScan
  • 该注解在指定扫描的位置时,可以指定包名,也可以指定扫描的类。同时支持定义扫描规则,例如包含哪些或者排除哪些。同时,它还可以通过nameGenerator自定义Bean的命名规则
  • 参数说明:
    • value / basePackages:用于指定要扫描的包。当指定了包的名称之后,spring会扫描指定的包及其子包下的所有类。
    • basePackageClasses:指定具体要扫描的类的字节码。
    • nameGenrator:指定扫描bean对象存入容器时的命名规则。默认情况下注入到IOC中的Bean的名称为类名的首字母小写。
    • scopeResolver:用于处理并转换检测到的Bean的作用范围。
    • soperdProxy:用于指定bean生成时的代理方式。
    • resourcePattern 用于指定符合组件检测条件的类文件,默认是包扫描下的 **/*.class,即Spring会扫描打上了@ComponentScan注解的类所在包以及子包下的所有类文件。
    • useDefaultFilters:是否对带有@Component @Repository @Service @Controller注解的类开启检测,默认是开启的。
    • includeFilters:自定义组件扫描的过滤规则,用以扫描组件。FilterType有5种类型:
      • ANNOTATION:注解类型,也是默认的类型
      • ASSIGNABLE_TYPE:指定固定类
      • ASPECTJ:ASPECTJ类型
      • REGEX:正则表达式
      • CUSTOM:自定义类型
      • excludeFilters:自定义组件扫描的排除规则。
    • lazyInit:组件扫描时是否采用懒加载 ,默认不开启。

切面(AOP)相关注解

Spring支持AspectJ的注解式切面编程。

@Aspect: 声明一个切面

@After: 在方法执行之后执行(方法上)

@Before: 在方法执行之前执行(方法上)

@Around: 在方法执行之前与之后执行(方法上)

@PointCut: 声明切点

在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持


异步相关

@EnableAsync

  • 配置类中通过此注解开启对异步任务的支持;

@Async

  • 在实际执行的bean方法使用该注解来声明其是一个异步任务
  • 方法上或类上所有的方法都将异步
  • 需要@EnableAsync开启异步任务

定时任务相关

@EnableScheduling

  • 在配置类上使用,开启计划任务的支持(类上)

@Scheduled

  • 来申明这是一个任务,包括cron,fixDelay,fixRate等类型
  • 需要@EnableScheduling开启定时任务

Enable***注解说明

这些注解主要是用来开启对xxx的支持:

  • @EnableAspectAutoProxy:开启对AspectJ自动代理的支持;
  • @EnableAsync:开启异步方法的支持;
  • @EnableScheduling:开启计划任务的支持;
  • @EnableWebMvc:开启web MVC的配置支持;
  • @EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持;
  • @EnableJpaRepositories:开启对SpringData JPA Repository的支持;
  • @EnableTransactionManagement:开启注解式事务的支持;
  • @EnableCaching:开启注解式的缓存支持;

测试相关注解

@RunWith

  • 运行器,Spring中通常用于对JUnit的支持

@ContextConfiguration

  • 用来加载配置配置文件,其中classes属性用来加载配置类。
  • 通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试
  • locations = {"classpath*:/*.xml"}就表示将classpath路径里所有的xml文件都包括进来,自动扫描的bean就可以拿到,此时就可以在测试类中使用@Autowired注解来获取之前自动扫描包下的所有bean。

@SuppressWarnings:抑制\镇压\废止 Warnings警告

  • @SuppressWarnings(“resource”)是J2SE 提供的一个批注。
  • 该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。
  • 允许您选择性地取消特定代码段(即,类或方法)中的警告。
  • 其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,您就可以添加一个 @SuppressWarnings 批注,以使您不会再看到警告。
  • 虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止您对警告无动于衷 — 您看到的每一个警告都将值得注意。

SpringMVC常用注解

@EnableWebMvc

  • 在配置类中开启Web MVC的配置支持。

@Controller

  • 控制器,处理http请求。

@RequestMapping
- Spring Web 应用程序中最常被用到的注解之一
- 将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上


@GetMapping、@DeleteMapping、@PostMapping、@PutMapping
- 用于将HTTP get/delete/post/put请求映射到特定处理程序的方法注解
- 是@RequestMapping的注解简写:
- @RequestMapping(value = “/say”,method = RequestMethod.GET)等价于:@GetMapping(value = “/say”)
- @RequestMapping(value = “/say”,method = RequestMethod.DELETE)等价于:@DeleteMapping(value = “/say”)
- @RequestMapping(value = “/say”,method = RequestMethod.POST)等价于:@PostMapping(value = “/say”)
- @RequestMapping(value = “/say”,method = RequestMethod.PUT)等价于:@PutMapping(value = “/say”)


@RequestBody

  • 允许request的参数在request体中,而不是在直接连接的地址后面。(放在参数前)
  • 通过HttpMessageConverter读取Request Body并反序列化为Object(泛指)对象

@PathVariable

  • 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值,通常作为Restful的接口实现方法。

@RestController

  • 该注解为一个组合注解
  • 相当于@ResponseBody@Controller合在一起的作用
  • 效果为:将方法返回的对象直接在浏览器上展示成json格式.

@ControllerAdvice

  • 用来指明异常的处理类型
  • 即如果这里指定异常为 ArithmeticException,则数组越界异常就不会进到这个方法中来
  • ControllerAdvice的常用场景
    • 全局异常处理
    • 全局数据绑定
    • 全局数据预处理
  • 注解定义全局异常处理类
  • 示例:
    @ControllerAdvice
    public class GlobalExceptionHandler {
    }
    

@ExceptionHandler

  • 注解声明异常处理方法
  • 示例:
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        @ExceptionHandler(Exception.class)
        @ResponseBody
        String handleException(){
            return "Exception Deal!";
        }
    }
    

@InitBinder

  • 用来设置WebDataBinder,用来自动绑定前台请求参数到Model中。

@ModelAttribute

  • 如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此被@ModelAttribute标记的方法。
  • 可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。比如:权限的验证(也可以使用Interceptor)等。

@ModelAttribute

  • 注释一个方法的参数
  • 当作为方法的参数使用,指示的参数应该从模型中检索。
  • 如果不存在,它应该首先实例化,然后添加到模型中,一旦出现在模型中,参数字段应该从具有匹配名称的所有请求参数中填充。

@Transactional

  • 放在类级别时,表示所有该类的公共方法都配置相同的事务属性信息、放在方法级别时,表示该
  • EmployeeService 的所有方法都支持事务并且是只读。当类级别配置了**@Transactional**,方法级别也配置了@Transactional,应用程序会以方法级别的事务属性信息来管理事务,换言之,方法级别的事务属性信息会覆盖类级别的相关配置信息。
  • 编程式事务管理:
    • 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager
    • 对于编程式事务管理,spring推荐使用TransactionTemplate
  • 声明式事务管理:
    • 建立在AOP之上的。
    • 其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务
    • 通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用
  • 注解的属性信息
    属性名说明
    name当在配置文件中有多个 TransactionManager , 可以用该属性指定选择哪个事务管理器。
    propagation事务的传播行为,默认值为 REQUIRED。
    isolation事务的隔离度,默认值采用 DEFAULT。
    timeout事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。
    read-only指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。
    rollback-for用于指定能够触发事务回滚的异常类型,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。
    no-rollback- for抛出 no-rollback-for 指定的异常类型,不回滚事务。

@PropertySource

  • 指定读取资源文件的位置。此注解不仅支持properties,也支持xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析yml配置文件
  • 参数说明
    • name:指定资源的名称。如果没有指定,将根据基础资源描述生成。
    • value:指定资源的位置。可以是类路径,也可以是文件路径。
    • ignoreResourceNotFound:没有找到资源文件是否忽略,默认是false,也就是说当资源文件不存在时spring启动将会报错。
    • encoding:指定解析资源文件使用的字符集。
    • factory:指定读取对应资源文件的工厂类,默认的是PropertySourceFactory。

@DependsOn

  • 指定某个Bean的创建需要依赖其它Bean
  • value:需要依赖的Bean的名称
  • spring中没有特定Bean的加载顺序,使用此注解则可指定Bean的加载顺序。

  • @Lazy
  • 用于指定单例bean对象的创建时机(是否采用延迟加载)
  • value:默认值为true,表示开启。
  • 没有使用此注解:单例bean的生命周期与容器相同。也就是容器创建后会将所有的单例Bean创建好放入容器中
  • 使用了此注解:单例对象的创建时机变成了第一次使用时创建。
  • 注意:@Lazy只对单例Bean起作用。

@Conditional
根据条件选择是否像容器中注入的bean对象
value:用于提供一个Condition接口的实现类,实现类中需要编写具体代码实现注入的条件。
当matches方法返回true表示向容器中注入Bean,返回false不向容器中注入Bean

  • @Value
    用于注入基本类型和String类型的数据。

    @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Value {
    
    	/**
    	 * The actual value expression: for example {@code #{systemProperties.myProp}}.
    	 */
    	String value();
    }
    
    • 支持spring的EL表达式,可以通过${} 的方式获取配置文件中的数据。配置文件支持properties,xmlyml文件。
    • value:指定注入的数据或者spring的EL表达式
  • @Scope
    用于指定Bean对象的生命周期。

    @Target({ElementType.TYPE, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Scope {
    
    	/**
    	 * Alias for {@link #scopeName}.
    	 * @see #scopeName
    	 */
    	@AliasFor("scopeName")
    	String value() default "";
    /**
    	 * Specifies the name of the scope to use for the annotated component/bean.
    	 * <p>Defaults to an empty string ({@code ""}) which implies
    	 * {@link ConfigurableBeanFactory#SCOPE_SINGLETON SCOPE_SINGLETON}.
    	 * @since 4.2
    	 * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE
    	 * @see ConfigurableBeanFactory#SCOPE_SINGLETON
    	 * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST
    	 * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION
    	 * @see #value
    	 */
    	@AliasFor("value")
    	String scopeName() default "";
    
    	ScopedProxyMode proxyMode() default ScopedProxyMode.DEFAULT;
    
    • value:指定作用范围的取值。在注解中默认值是""。但是在spring初始化容器时,会借助ConfigurableBeanFactory接口中的类成员:String SCOPE_SINGLETON = “singleton”;
    • singleton:单例模式(默认)
    • prototype:原型模式,每次获取Bean都会创建一个对象
    • request:在web项目中可选,给每一个http request新建一个Bean实例
    • session:在web项目中可选,给每一个http session新建一个Bean实例
    • application:在web项目中可选,bean实例同应用一起创建,并且继续使用到应用结束
    • scopeName: 它和value的作用是一样的。
    • proxyMode:它是指定bean对象的代理方式的。指定的是ScopedProxyMode枚举的值
      • DEFAULT:默认值(NO)
      • NO:不使用代理。
      • INTERFACES:使用JDK官方的基于接口的代理。
      • TARGET_CLASS:使用CGLIB基于目标类的子类创建代理对象
  • @PostConstruct
    用于指定bean对象的初始化方法。

    @Documented
    @Retention (RUNTIME)
    @Target(METHOD)
    public @interface PostConstruct {
    }
    
  • @PreDestroy
    用于指定bean对象的销毁方法

    @Documented
    @Retention (RUNTIME)
    @Target(METHOD)
    public @interface PreDestroy {
    }
    
  • @EnableTransactionManagement
    开启基于注解的声明式事务
    一般用于配置类

    @Configuration
    @EnableTransactionManagement//开启基于注解的声明式事务
    public class SpringTxConfig {
    }
    

SpringBoot相关注解

启动注解 :@SpringBootApplication

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    // ... 此处省略源码
}
  • 查看源码可发现,@SpringBootApplication是一个复合注解,包含了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan这三个注解

  • @SpringBootConfiguration

    • 继承@Configuration注解,主要用于加载配置文件
    • 标注当前类是配置类, 并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
  • @EnableAutoConfiguration

    • 开启自动配置功能
    • 助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器
    • 借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自动配置功效才得以大功告成
  • @ComponentScan

    • 自动扫描并加载符合条件的组件或bean定义,最终将这些bean定义加载到容器中
    • 可以通过basePackages等属性指定@ComponentScan自动扫描的范围
    • 不指定:默认Spring框架实现从声明@ComponentScan所在类的package进行扫描

取请求参数值

  • @PathVariable

    • 获取url中的数据
    • 示例:
      @Controller
      @RequestMapping("/User")
      public class HelloWorldController {
      
          @RequestMapping("/getUser/{uid}")
          public String getUser(@PathVariable("uid")Integer id, Model model) {
              System.out.println("id:"+id);
              return "user";
          }
      }
      
      • 请求示例:http://localhost:8080/User/getUser/123
  • @RequestParam

    • 获取请求参数的值
    • 示例:
      @Controller
      @RequestMapping(/User)
      public class HelloWorldController {
      
      @RequestMapping("/getUser")
      public String getUser(@RequestParam("uid")Integer id, Model model) {
          System.out.println("id:"+id);
          return "user";
      }
      }
      
      • 请求示例:http://localhost:8080/User/getUser?uid=123
  • @RequestHeader

    • 把Request请求header部分的值绑定到方法的参数上

  • @CookieValue
    • 把Request header中关于cookie的值绑定到方法的参数上

导入配置文件

@PropertySource

  • 引入properties文件
  • 引入单个properties文件:@PropertySource(value = {“classpath : xxxx/xxx.properties”})
  • 引入多个properties文件:@PropertySource(value = {“classpath : xxxx/xxx.properties”,“classpath : xxxx.properties”})

@ImportSource

  • 导入xml配置文件
  • 可以额外分为两种模式 相对路径classpath,绝对路径(真实路径)file
  • 注意:单文件可以不写value或locations,value和locations都可用
  • 相对路径(classpath)
    • 引入单个xml配置文件:@ImportSource(“classpath : xxx/xxxx.xml”)
    • 引入多个xml配置文件:@ImportSource(locations={“classpath : xxxx.xml” , “classpath : yyyy.xml”})
  • 绝对路径(file)
    • 引入单个xml配置文件 @ImportSource(locations= {“file : d:/hellxz/dubbo.xml”})
    • 引入多个xml配置文件:@ImportSource(locations= {“file : d:/hellxz/application.xml” , “file : d:/hellxz/dubbo.xml”})

@Value

  • 取值:使用@Value注解取配置文件中的值
    @Value(“${`properties/yml中的键`})
    private String xxx;
    

json常用注解

@JsonIgnoreProperties

  • 此注解是类注解
  • json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
  • 将此标签加在user类的类名上 ,可以多个属性也可以单个属性。
    //生成json时将name和age属性过滤
    @JsonIgnoreProperties({"name"},{"age"})
    public class  user {
     
        private  String name;
        private int age;
    }
    

@JsonIgnore

  • 此注解用于属性或者方法上(最好是属性上
  • json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
    //生成json 时不生成age 属性
    public class user {
     
        private String name;
        @JsonIgnore
        private int age;
    }
    

@JsonFormat

  • 此注解用于属性或者方法上(最好是属性上)
  • 可以方便的把Date类型直接转化为我们想要的模式
    public class User{
        @JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)
        private Date date;
    }
    

@JsonSerialize

  • 此注解用于属性或者getter方法上
  • 用于在序列化时嵌入我们自定义的代码
  • 比如:序列化一个double时在其后面限制两位小数点。

@JsonDeserialize

  • 此注解用于属性或者setter方法上
  • 用于在反序列化时可以嵌入我们自定义的代码

@Transient

  • 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic;

@JsonIgnoreType

  • 标注在类上
  • 当其他类有该类作为属性时,该属性将被忽略。

@JsonProperty

  • 指定某个属性和json映射的名称。
  • 例如:
    • json字符串为{“user_name”:”aaa”}
    • 而java中命名要遵循驼峰规则,则为userName
    • 这时通过@JsonProperty 注解来指定两者的映射规则即可。
      public class SomeEntity {
          @JsonProperty("user_name")
          private String userName;
      }
      

只在序列化情况下生效的注解
@JsonPropertyOrder

  • 在将 java pojo 对象序列化成为 json 字符串时,使用此注解可以指定属性在 json 字符串中的顺序。

@JsonInclude

  • 在将 java pojo 对象序列化成为 json 字符串时,使用此注解可以控制在哪些情况下才将被注解的属性转换成 json
  • 例如:只有属性不为 null 时。

@JsonInclude(JsonInclude.Include.NON_NULL)

  • 这个注解放在类上,返给前端的json里就没有null类型的字段,即实体类与json互转的时候 属性值为null的不参与序列化。
  • 另外还有很多其它的范围,例如 NON_EMPTYNON_DEFAULT

在反序列化情况下生效的注解
@JsonSetter

  • 标注于 setter 方法上
  • 可以解决 json 键名称和 java pojo 字段名称不匹配的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我好帅啊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值