Java5.0過後開始支持註解,Spring作為java中的領軍框架,在Spring2.5過後也開始放棄xml配置文件了,更多的推薦註解來使用Spring框架。
Spring中那麼多的註解,其中很多可能在工作中很少能遇見,也就用不上。下面就給大家總結一些常用的註解。
@Required
該註解用於bean的setter方法上。表示這個屬性是必須的,在配置階段必須注入,否則會拋出異常。
@Autowired
該註解用於bean的屬性,set方法以及和構造器上,通過type來聲明bean依賴,從而自動注入。
屬性field 使用該註解,會自動賦值給該屬性。但是按照阿里編碼規範,不推薦這樣使用(不推薦)。
@RestController
public class AppUserController extends Controller {
private CampaignService campaignService;
}
set方法上使用該註解,可以在setter方法中添加自定義代碼。
@Component
private People people;
public void setPeople(People people){
this.people = people
構造器上使用該註解。一個類中只允許有一個構造器上使用該註解。在Spring4過後,如果一個類只有一個構造方法,即使不使用該註解,Spring也會自動注入相關的bean。
public AppUserController (People people){
this.people = people;
@Qualifier
該註解通常和@Autowired結合使用。當Spring容器中有多個相同類型的bean存在時,需要用該註解來指定對應name來區分到底使用哪個bean。
@Qualifier("people1")
@Configuration
該註解用類上來定義bean。表示這個類是一個配置類,作用和xml配置文件相同。常常結合@Bean使用來初始化定義bean。
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public JedisPool redisPoolFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
if (StringUtils.isNotBlank(password)) {
return new JedisPool(jedisPoolConfig, host, port, timeout, password);
} else {
return new JedisPool(jedisPoolConfig, host, port, timeout);
@ComponentScan
該註解常和@Configuration結合使用,Spring掃描註解的包,如果沒有指定,那麼默認掃描註解所在的包。通常在使用mybatis時使用,來掃描其xml配置文件。
@Lazy
一般情況下,Spring容器在啟動時會創建所有的Bean對象,使用@Lazy註解可以將Bean對象的創建延遲到第一次使用Bean的時候。如果想要延遲初始化一個bean,那麼就可以使用該註解,表示只有在第一次使用的時候才會創建和初始化。當該註解同@Configuration一起使用時,表示該類中的所有被@bean註解的方法都會延遲初始化。
@Value
該註解用來讀取配置文件變量,環境變量和系統屬性的值,並將其賦值給使用該註解的屬性。常常用於讀取配置文件中的值。
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;