Spring最開始是爲了解決EJB等大型企業框架對應用程序的侵入性
因此大量依靠配置文件來“非侵入式”得給POJO增加功能
從Spring 3.x開始,Spring被外界最爲詬病的一點就是配置繁多,號稱“配置地獄”
從Spring 4.x開始,Spring.io提供了三種方式編織Bean:
- 利用註解:隱式配置,例如:@Autowired、@Bean、@Component等,通過註解來簡化xml文件。
- 利用Java文件:顯示配置,比xml配置的優勢是具備類型安全
- 利用傳統的xml配置文件
註解(annotations)列表
@ResponseBody
用該註解修飾的函數,會將結果直接填充到HTTP的響應體中,一般用於構建RESTful的api;
@Controller
用於定義控制器類,在spring 項目中由 控制器 負責 將用戶發來的URL請求 轉發到 對應的服務接口(service層)
一般情況下@Controller與 @RequestMapping 一起使用,用於指定 URL對應的處理方法或者處理類
@Controllerpublic class Index {
@RequestMapping(value ="/", method = RequestMethod.GET)
@ResponseBody
public String hello(){
return "hello world";
}
}
與Controller類似,使用這個註解表明是REST接口
@ResponseBody
@RequestMapping
提供路由信息,負責 URL到Controller中的具體函數的映射。
@EnableAutoConfiguration
Spring Boot自動配置(auto-configuration):嘗試根據你添加的jar依賴自動配置你的Spring應用。例如,如果你的classpath下存在HSQLDB,並且你沒有手動配置任何數據庫連接beans,那麼我們將自動配置一個內存型(in-memory)數據庫”。你可以將@EnableAutoConfiguration或者@SpringBootApplication註解添加到一個@Configuration類上來選擇自動配置。如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration註解的排除屬性來禁用它們。
@ComponentScan
表示將該類自動發現(掃描)並註冊爲Bean,可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan註解搜索beans,並結合@Autowired註解導入。
@Configuration
相當於傳統的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作爲項目的配置主類——可以使用@ImportResource註解加載xml配置文件。
@SpringBootApplication
相當於@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。
@Import
用來導入其他配置類。
@ImportResource
用來加載xml配置文件。
@Autowired
自動導入依賴的bean
@Service
一般用於修飾service層的組件
@Repository
@Lazy(true) 表示延遲初始化
@Service用於標註業務層組件、
@Controller用於標註控制層組件(如struts中的action)
@Repository用於標註數據訪問組件,即DAO組件。
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。
@Scope用於指定scope作用域的(用在類上)
@PostConstruct用於指定初始化方法(用在方法上)
@PreDestory用於指定銷燬方法(用在方法上)
@DependsOn:定義Bean初始化及銷燬時的順序
@Primary:自動裝配時當出現多個Bean候選者時,被註解爲@Primary的Bean將作爲首選者,否則將拋出異常
@Autowired 默認按類型裝配,如果我們想使用按名稱裝配,可以結合@Qualifier註解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多個實例配合使用
@Resource默認按名稱裝配,當找不到與名稱匹配的bean纔會按類型裝配。
@PostConstruct 初始化註解
@PreDestroy 摧毀註解 默認 單例 啓動就加載