`
m635674608
  • 浏览: 5041059 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

springboot注解

 
阅读更多

@RestController和@RequestMapping注解

我们的Example类上使用的第一个注解是 @RestController 。这被称为一个构造型(stereotype)注解。它为阅读代码的人们提供建议。对于Spring,该类扮演了一个特殊角色。在本示例中,我们的类是一个web @Controller ,所以当处理进来的web请求时,Spring会询问它。@RequestMapping 注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到 home 方法。 @RestController 注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。

注: @RestController 和 @RequestMapping 注解是Spring MVC注解(它们不是Spring Boot的特定部分)

 


@EnableAutoConfiguration注解

第二个类级别的注解是 @EnableAutoConfiguration 。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。Starter POMs和Auto-Configuration:设计auto-configuration的目的是更好的使用"Starter POMs",但这两个概念没有直接的联系。你可以自由地挑选starter POMs以外的jar依赖,并且Spring Boot将仍旧尽最大努力去自动配置你的应用。

你可以通过将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一个 @Configuration 类上来选择自动配置。
注:你只需要添加一个 @EnableAutoConfiguration 注解。我们建议你将它添加到主 @Configuration 类上。

如果发现应用了你不想要的特定自动配置类,你可以使用 @EnableAutoConfiguration 注解的排除属性来禁用它们。

复制代码
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
复制代码

 


@Configuration

Spring Boot提倡基于Java的配置。尽管你可以使用一个XML源来调用 SpringApplication.run() ,我们通常建议你使用 @Configuration 类作为主要源。一般定义 main 方法的类也是主要 @Configuration 的一个很好候选。你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan 注解自动收集所有的Spring组件,包括 @Configuration 类。

如果你绝对需要使用基于XML的配置,我们建议你仍旧从一个 @Configuration 类开始。你可以使用附加的 @ImportResource 注解加载XML配置文件。

@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean

 


 @ComponentScan

你可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。简单起见,我们经常使用 @ComponentScan 注解搜索beans,并结合 @Autowired 构造器注入。
如果使用上面建议的结构组织代码(将应用类放到根包下),你可以添加 @ComponentScan 注解而不需要任何参数。你的所有应用程序组件( @Component , @Service , @Repository , @Controller 等)将被自动注册为Spring Beans。

 


@SpringBootApplication

很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的 @SpringBootApplication 选择。
该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。

复制代码
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
复制代码

 


 

@ConfigurationProperties

属性注入

复制代码
@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {
    private String username;
    private InetAddress remoteAddress;
    // ... getters and setters
}
复制代码

 

为了使用@ConfigurationProperties beans,你可以使用与其他任何bean相同的方式注入它们

复制代码
@Service
public class MyService {
    @Autowired
    private ConnectionSettings connection;
    //...
    @PostConstruct
    public void openConnection() {
        Server server = new Server();
        this.connection.configure(server);
    }
}
复制代码

 

正如使用@ConfigurationProperties注解一个类,你也可以在@Bean方法上使用它。当你需要绑定属性到不受你控制的第三方组件时,这种方式非常有用。

为了从Environment属性配置一个bean,将@ConfigurationProperties添加到它的bean注册过程:

@ConfigurationProperties(prefix = "foo")
@Bean
public FooComponent fooComponent() {
...
}

 

和上面ConnectionSettings的示例方式相同,任何以foo为前缀的属性定义都会被映射到FooComponent上。

Spring Boot将尝试校验外部的配置,默认使用JSR-303(如果在classpath路径中)。你可以轻松的为你的@ConfigurationProperties类添加JSR-303 javax.validation约束注解:

复制代码
@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {
@NotNull
private InetAddress remoteAddress;
// ... getters and setters
}
复制代码

 

 


 

@EnableConfigurationProperties

当@EnableConfigurationProperties注解应用到你的@Configuration时,任何被@ConfigurationProperties注解的beans将自动被Environment属性配置

你可以通过在@EnableConfigurationProperties注解中直接简单的列出属性类来快捷的注册@ConfigurationProperties bean的定义。

@Configuration
@EnableConfigurationProperties(ConnectionSettings.class)
public class MyConfiguration {
}

 

 


@Component和@Bean

@Component被用在要被自动扫描和装配的类上。@Component类中使用方法或字段时不会使用CGLIB增强(及不使用代理类:调用任何方法,使用任何变量,拿到的是原始对象)Spring 注解@Component等效于@Service,@Controller,@Repository
@Bean主要被用在方法上,来显式声明要用生成的类;用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean。

现在项目上,本工程中的类,一般都使用@Component来生成bean。在把通过web service取得的类,生成Bean时,使用@Bean和getter方法来生成bean

 


@Profiles

Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。

 

@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}

以正常的Spring方式,你可以使用一个spring.profiles.active的Environment属性来指定哪个配置生效。你可以使用平常的任何方式来指定该属性,例如,可以将它包含到你的application.properties中:

 spring.profiles.active=dev,hsqldb

 

 

https://www.cnblogs.com/woms/p/5754200.html

分享到:
评论

相关推荐

    [[springBoot系列]--springBoot注解大全].md

    [[springBoot系列]--springBoot注解大全]

    SpringBoot 注解

    SpringBoot 注解大全,满足一般的Java需求开发,自己做的一个注解chm文档

    史上最全SpringBoot注解(整合+详解) - 知乎.html

    史上最全SpringBoot注解(整合+详解) - 知乎.html

    基于SpringBoot注解的dtguai-encrypt-starter数据加密与解密设计源码

    本项目为基于SpringBoot注解驱动的dtguai-encrypt-starter,提供全面的数据加密与解密功能,支持多种加密方式(包括MD5、SHA、AES、DES、RSA及国密算法SM2/SM3/SM4),涵盖加签、验签等数字证书服务,适用于...

    springboot注解.md

    springboot注解.md

    [springBoot系列]-springBoot注解大全.pdf

    【SpringBoot注解详解】 SpringBoot的注解是其核心特性之一,它们简化了传统的XML配置,使得开发者能够更高效地构建应用。以下是一些关键的SpringBoot注解的详细解释: 1. **@SpringBootApplication**: 这是...

    springboot注解的应用.rar

    这个压缩包"springboot注解的应用.rar"显然包含了关于SpringBoot中注解使用、自动配置、全局配置和日志管理等方面的知识点。让我们逐一探讨这些主题。 首先,**SpringBoot的核心注解**是其简洁易用的关键。`@...

    SpringBoot注解详解.pdf

    SpringBoot注解是简化Spring应用程序开发的关键特性,它允许开发者以声明式的方式配置和管理应用程序。以下是关于SpringBoot核心注解的详细解释: 1. **@SpringBootApplication**:这是SpringBoot应用的核心注解,...

    [spring11Boot系列]-springBoot注解大全.docx

    。。[spring11Boot系列]--springBoot注解大全.docx

    [spring11Boot系列]-springBoot注解大全.pdf

    。。[spring11Boot系列]--springBoot注解大全.pdf

    在springboot中使用注解将值注入参数的操作

    @SpringBootApplication public class DemoApplication extends WebMvcConfigurationSupport { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override ...

    最全SpringBoot注解详解(整合超详细版本).txt

    最全SpringBoot注解详解(整合超详细版本)

    springboot 脱敏自定义注解

    在本例中,"springboot 脱敏自定义注解"意味着我们要创建一个自定义注解,标记在那些需要进行脱敏处理的方法上。自定义注解可以如下定义: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType....

    springboot注解详解.pdf

    使用注解的优势有采用纯java代码,不在需要配置繁杂的xml文件,在配置中也可享受面向对象带来的好处.类型安全对重构可以提供良好的支持.减少复杂配置文件的同时亦能享受到springIoC容器提供的功能

    使用SpringBoot注解方式处理事务回滚实现

    使用 SpringBoot 注解方式处理事务回滚实现 在本文中,我们将介绍使用 SpringBoot 注解方式处理事务回滚实现的方法,并通过示例代码进行详细的讲解。本文对于学习 SpringBoot 的开发者或者工作中需要实现事务回滚的...

    springboot注解实现excel下载

    利用注解实现excel导出。PubCloudFrmAgrmController是controller层,ResponseEntity是返回给前端的excel下载流。调用下载只需new ExportExcel("框架协议数据", FrmAgrmExcelOutVo.class).setDataList(list)....

    springboot注解+aop实现接口限流

    springboot框架中使用自定义注解,配合切面实现接口限流,增加ip黑名单功能,可实现ip+账号+接口进黑名单,也可以实现账号+ip进黑名单及禁用账号; 可以学会自定义注解使用、自定义响应码枚举及使用、自定义异常类及...

    springboot工程自定义response注解、自定义规范化返回数据结构

    本主题将深入探讨如何在Spring Boot工程中通过自定义response注解、利用Java反射机制、设置自定义拦截器以及实现WebMvcConfigurer接口来实现这一目标。 首先,我们来看自定义response注解。在Spring Boot中,可以...

    springboot集成mybatis的注解方式完整例子

    在本文中,我们将深入探讨如何将MyBatis与SpringBoot框架进行注解方式的集成,构建一个完整的项目实例。SpringBoot以其简洁、快速的启动方式和自动配置特性,深受开发者喜爱。而MyBatis作为轻量级的持久层框架,通过...

    SpringBoot的入门代码,代码有详细的注解

    这个注解包含了`@SpringBootConfiguration`(配置)、`@EnableAutoConfiguration`(启用自动配置)和`@ComponentScan`(组件扫描)三个注解的功能,它告诉SpringBoot如何初始化和配置应用。 **SpringBoot的启动器**...

Global site tag (gtag.js) - Google Analytics