关于springboot:SpringBoot常用注解整理

46次阅读

共计 5382 个字符,预计需要花费 14 分钟才能阅读完成。

@SpringBootApplication
定义在 main 办法入口类处,用于启动 sping boot 利用我的项目

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {

    /**
     * Exclude specific auto-configuration classes such that they will never be applied.
     * @return the classes to exclude
     */
    Class<?>[] exclude() default {};}

@EnableAutoConfiguration 让 spring boot 依据类门路中的 jar 包依赖以后我的项目进行主动配置 在 src/main/resources 的 META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
若有多个主动配置,用“,”隔开

@ImportResource
加载 XML 文件,个别是放在启动 main 类上

@ImportResource("classpath*:/spring/*.xml")  单个
@ImportResource({"classpath*:/spring/1.xml","classpath*:/spring/2.xml"})   多个

@Value
application.properties 定义属性,间接应用 @Value 注入即可

public class A{@Value("${push.start:0}")    如果缺失,默认值为 0
     private Long  id;
}

@ConfigurationProperties(prefix=”person”)
能够新建一个 properties 文件,ConfigurationProperties 的属性 prefix 指定 properties 的配置的前缀,通过 location 指定 properties 文件的地位

@ConfigurationProperties(prefix="person")
public class PersonProperties {
    
    private String name ;
    private int age;
}

@EnableConfigurationProperties
用 @EnableConfigurationProperties 注解使 @ConfigurationProperties 失效,并从 IOC 容器中获取 bean
博客地址:https://blog.csdn.net/u010502…
@RestController
组合 @Controller 和 @ResponseBody,当你开发一个和页面交互数据的管制时,比方 bbs-web 的 api 接口须要此注解
@RequestMapping(“/api2/copper”)
用来映射 web 申请(拜访门路和参数)、解决类和办法,能够注解在类或办法上。注解在办法上的门路会继承注解在类上的门路。
produces 属性: 定制返回的 response 的媒体类型和字符集,或需返回值是 json 对象

@RequestMapping(value="/api2/copper",produces="application/json;charset=UTF-8",method = RequestMethod.POST)

@RequestParam
获取 request 申请的参数值

 public List<CopperVO> getOpList(HttpServletRequest request,
                                    @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
                                    @RequestParam(value = "pageSize", required = false) Integer pageSize) {}

@ResponseBody
反对将返回值放在 response 体内,而不是返回一个页面。比方 Ajax 接口,能够用此注解返回数据而不是页面。此注解能够搁置在返回值前或办法前。

另一个玩法,能够不必 @ResponseBody。继承 FastJsonHttpMessageConverter 类并对 writeInternal 办法扩大,在 spring 响应后果时,再次拦挡、加工后果
// stringResult: json 返回后果
//HttpOutputMessage outputMessage

 byte[] payload = stringResult.getBytes();
 outputMessage.getHeaders().setContentType(META_TYPE);
 outputMessage.getHeaders().setContentLength(payload.length);
 outputMessage.getBody().write(payload);
 outputMessage.getBody().flush();

@Bean
@Bean(name=”bean 的名字 ”,initMethod=” 初始化时调用办法名字 ”,destroyMethod=”close”)
定义在办法上,在容器内初始化一个 bean 实例类

@Bean(destroyMethod="close")
@ConditionalOnMissingBean
public PersonService registryService() {return new PersonService();
    }

@Service
用于标注业务层组件
@Controller
用于标注管制层组件 (如 struts 中的 action)
@Repository
用于标注数据拜访组件,即 DAO 组件
@Component
泛指组件,当组件不好归类的时候,咱们能够应用这个注解进行标注。
@PostConstruct
spring 容器初始化时,要执行该办法

@PostConstruct  
public void init() {}   

@PathVariable
用来取得申请 url 中的动静参数

@Controller  
public class TestController {@RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET)  
     public String getLogin(@PathVariable("userId") String userId,  
         @PathVariable("roleId") String roleId){System.out.println("User Id :" + userId);  
         System.out.println("Role Id :" + roleId);  
         return "hello";  
     
     }  
}

@ComponentScan
注解会告知 Spring 扫描指定的包来初始化 Spring

@ComponentScan(basePackages = "com.bbs.xx")

@EnableZuulProxy
路由网关的次要目标是为了让所有的微服务对外只有一个接口,咱们只需拜访一个网关地址,即可由网关将所有的申请代理到不同的服务中。Spring Cloud 是通过 Zuul 来实现的,反对主动路由映射到在 Eureka Server 上注册的服务。Spring Cloud 提供了注解 @EnableZuulProxy 来启用路由代理
@Autowired
在默认状况下应用 @Autowired 正文进行主动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出 BeanCreationException 异样,并指出必须至多领有一个匹配的 Bean
当不能确定 Spring 容器中肯定领有某个类的 Bean 时,能够在须要主动注入该类 Bean 的中央能够应用 @Autowired(required = false),这等于通知 Spring: 在找不到匹配 Bean 时也不报错
@Autowired 注解注入 map、list 与 @Qualifier
博客地址:https://blog.csdn.net/ethunse…
@Configuration

@Configuration("name")// 示意这是一个配置信息类, 能够给这个配置类也起一个名称
@ComponentScan("spring4")// 相似于 xml 中的 <context:component-scan base-package="spring4"/>
public class Config {

    @Autowired// 主动注入,如果容器中有多个合乎的 bean 时,须要进一步明确
    @Qualifier("compent")// 进一步指明注入 bean 名称为 compent 的 bean
    private Compent compent;

    @Bean// 相似于 xml 中的 <bean id="newbean" class="spring4.Compent"/>
    public Compent newbean(){return new Compent();
    }   
}

@Import(Config1.class)
导入 Config1 配置类里实例化的 bean

@Configuration
public class CDConfig {

    @Bean   // 将 SgtPeppers 注册为 SpringContext 中的 bean
    public CompactDisc compactDisc() {return new CompactDisc();  // CompactDisc 类型的
    }
}

@Configuration
@Import(CDConfig.class)  // 导入 CDConfig 的配置
public class CDPlayerConfig {@Bean(name = "cDPlayer")
    public CDPlayer cdPlayer(CompactDisc compactDisc) {  
         // 这里会注入 CompactDisc 类型的 bean
         // 这里注入的这个 bean 是 CDConfig.class 中的 CompactDisc 类型的那个 bean
        return new CDPlayer(compactDisc);
    }
}

@Order
@Order(1),值越小优先级超高,越先运行
@ConditionalOnExpression

@Configuration
@ConditionalOnExpression("${enabled:false}")
public class BigpipeConfiguration {
    @Bean
    public OrderMessageMonitor orderMessageMonitor(ConfigContext configContext) {return new OrderMessageMonitor(configContext);
    }
}

开关为 true 的时候才实例化 bean
@ConditionalOnProperty
这个注解可能管制某个 @Configuration 是否失效。具体操作是通过其两个属性 name 以及 havingValue 来实现的,其中 name 用来从 application.properties 中读取某个属性值,如果该值为空,则返回 false; 如果值不为空,则将该值与 havingValue 指定的值进行比拟,如果一样则返回 true; 否则返回 false。如果返回值为 false,则该 configuration 不失效;为 true 则失效
博客地址:https://blog.csdn.net/dalangz…
@ConditionalOnClass
该注解的参数对应的类必须存在,否则不解析该注解润饰的配置类

@Configuration
@ConditionalOnClass({Gson.class})
public class GsonAutoConfiguration {public GsonAutoConfiguration() { }

    @Bean
    @ConditionalOnMissingBean
    public Gson gson() {return new Gson();
    }
}

@ConditionalOnMisssingClass({ApplicationManager.class})
如果存在它润饰的类的 bean,则不须要再创立这个 bean
@ConditionOnMissingBean(name = “example”)
示意如果 name 为“example”的 bean 存在,该注解润饰的代码块不执行

正文完
 0