@Value 可以爲屬性注入某些值,支持字符串,spel表達式和配置文件的方式
@Value("caraliu") private String name; @Value("#{29-5}") private int age; @Value("${spring.desc}") private String desc;
在使用配置文件的時候,要將配置文件讀入運用中:
在配置類上加入: @PropertySource(value={"classpath:/caraliu.properties"})
然後可以到運用的環境中讀取到spring.desc 這個值caraliu.properties
通過:applicationContext.getEnvironment().getProperty("spring.desc")可以獲取
@Autowired 依賴注入,根據類型注入(如果該類型有多個類,那麼會根據屬性名去拿對應的那個)(默認時一定要裝入一個類,如果沒有該類型的類,會拋出異常,可以設@Autowired(required = false),那麼沒有就爲null,不會拋出異常)
也可以通過@Qualifier("myService")聲明注入的那個bean的id
@Primary 首選被裝入,加入這個註解@Qualifier("myService")可以根據id聲明注入對應的bean
@Resource 根據id名稱注入,默認是屬性名,也可以指定id(java規範,其他ioc框架也能用)
@Inject要使用前要引入pom的依賴。 (java規範,其他ioc框架也能用)
xxxAware可以將xxx注入到當前類中,那麼就可以使用xxx的功能,xxxAware的功能是通過xxxProcessor來實現的,每一個xxxAware都會有對應的xxxProcessor處理
激活相應的環境 @Profile("default") 可以標註在類上(作用範圍整個類)或者方法上(作用範圍是該方法)
假設@Profile("dev")如何不激活dev環境,那麼相應的配置不起作用。
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.getEnvironment().setActiveProfiles("dev","test");
applicationContext.register(Configure.class);
applicationContext.refresh();
經過上述配置,dev環境的配置都會起作用