@Bean 注解
Indicates that a method produces a bean to be managed
by the Spring container.
該注解用于方法上,使用該注解的方法將會生成一個實體對象,該實體對象將統一由Spring容器管理
這個注解屬性的名稱和語義是有意與Spring xml配置模式中的<bean/>元素類似
@Bean注解返回的實體對象名稱默認使用被@Bean注解的方法名稱
@Bean ----①
//@Bean("helloBean") ----②
public MyBean myBean() {
// instantiate and configure MyBean obj
return obj;
}
如上①注釋,默認情況下,返回的實體對象名稱為myBean,當然我們可以使用②注釋的方法來給實體類指定一個別名(特別注意,@Bean是允許有多個別名存在)
// bean 可用作 'b1' 和'b2', 但不可用作'myBean'
@Bean({"b1", "b2"})
public MyBean myBean() {
// instantiate and configure MyBean obj
return obj;
}
- @Bean 注解不提供Scope、depends-on、primary、lazy屬性,相反的,@Bean屬性應該與上述提到的屬性配合使用,例如
@Bean
@Scope("prototype")
public MyBean myBean() {
// instantiate and configure MyBean obj
return obj;
}
在@Configuration中聲明@Bean屬性
通常情況下,攜帶@Bean注解的方法在攜帶@Configuration注解的類中聲明,在這種情況下,相同的類中,不同的@Bean方法可以直接相互調用.作為代價@Configuration類及其工廠方法不能聲明為私有.
@Configuration
public class AppConfig {
@Bean
public FooService fooService() {
return new FooService(fooRepository());
}
@Bean
public FooRepository fooRepository() {
return new JdbcFooRepository(dataSource());
}
// ...
}
@Bean的Lite模式
@Bean 注解并不一定非要在注解的了@Configuration的類中使用,你也可以在@Component類中或者甚至在普通的java類中使用@Bean注解,在這種情況下,@Bean注解將以所謂的Lite模式被處理
@Configuration
該注解表示該類為Spring容器的配置類
@EnableAutoConfiguration
開啟SpringBoot的自動配置功能,它主要告訴springboot根據你配置的依賴進行自動配置,比如你配置了spring-boot-started-web,springboot假設你正在開發一個web應用,并進行一些web相關的配置.
@ComponentScan
掃描SpringBoot根Package下所有的Bean.
@RestController[2018年1月2日22:27:01]
返回文本形式的數據(json,xml)
@RestController相當于在@Controller注解的類中的每個方法加上@ResponseBody注解
@RequestMapping(value="/xxx",method = RequestMethod.DELETE)
Url路徑映射
value:表示實際請求的URL地址
method:請求方法,可以是POST/GET/DELETE/PUT等
@PathVariable
url傳參,被該@PathVariable注解的參數將被填充到@RequestMapping中的Url地址的通配符中。
@ControllerAdvice
被@ControllerAdvice注解的類
內部被@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法
將被應用到所有的被@RequestMapping注解的方法
@ControllerAdvice 一般作為全局異常處理的切面類,它可以指定掃描范圍,返回值定義:
如果直接返回Model類,需要使用@ResponseBody 進行json轉化
如果返回的是String,表示跳轉到某個View
如果返回的是ModelAndView則相當于 Model+@ResponseBody