作用:
調用無參構造創建一個bean對象,並把對象存入spring的IOC容器,交由spring容器進行管理。相當於在xml中配置一個bean。
屬性:
value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。
1.2
作用:
作用上與@Component。一般用於表現層的註解。
屬性:
value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。
1.3
作用:
作用上與@Component。一般用於業務層的註解。
屬性:
value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。
1.4
作用:
作用上與@Component。一般用於持久層的註解。
屬性:
value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。
1.5
作用:
用於把當前方法的返回值作為bean對象存入spring的ioc容器中
屬性:
name:用於指定bean的id。當不寫時,默認值是當前方法的名稱。注意:當我們使用註解配置方法時,如果方法有參數,spring框架會去容器中查找有沒有可用的bean對象,查找的方式和Autowired註解的作用是一樣的。
案例:
/** * 獲取DataSource對象 * @return */@Bean(value = "dataSource")public DataSource getDataSource() { try { ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass(this.driver); dataSource.setJdbcUrl(this.url); dataSource.setUser(this.username); dataSource.setPassword(this.password); return dataSource; }catch (Exception exception) { throw new RuntimeException(exception); }}
2)用於依賴注入的註解
2.1
作用:
@Autowire和@Resource都是Spring支持的註解形式動態裝配bean的方式。Autowire默認按照類型(byType)裝配,如果想要按照名稱(byName)裝配,需結合@Qualifier註解使用。
屬性:
required:@Autowire註解默認情況下要求依賴對象必須存在。如果不存在,則在注入的時候會拋出異常。如果允許依賴對象為null,需設置required屬性為false。
案例:
@Autowire @Qualifier("userService")private UserService userService;
2.2
作用:
在自動按照類型注入的基礎之上,再按照 Bean 的 id 注入。它在給欄位注入時不能獨立使用,必須和 @Autowire一起使用;但是給方法參數注入時,可以獨立使用。
屬性:
value:用於指定要注入的bean的id,其中,該屬性可以省略不寫。
案例:
@Autowire@Qualifier(value="userService")//@Qualifier("userService") //value屬性可以省略不寫private UserService userService;
2.3
作用:
@Autowire和@Resource都是Spring支持的註解形式動態裝配bean的方式。@Resource默認按照名稱(byName)裝配,名稱可以通過name屬性指定。如果沒有指定name,則註解在欄位上時,默認取(name=欄位名稱)裝配。如果註解在setter方法上時,默認取(name=屬性名稱)裝配。
屬性:
name:用於指定要注入的bean的idtype:用於指定要注入的bean的type
裝配順序
1.如果同時指定name和type屬性,則找到唯一匹配的bean裝配,未找到則拋異常;2.如果指定name屬性,則按照名稱(byName)裝配,未找到則拋異常;3.如果指定type屬性,則按照類型(byType)裝配,未找到或者找到多個則拋異常;4.既未指定name屬性,又未指定type屬性,則按照名稱(byName)裝配;如果未找到,則按照類型(byType)裝配。
案例:
@Resource(name="userService")//@Resource(type="userService")//@Resource(name="userService", type="UserService")private UserService userService;
2.4
作用:
通過@Value可以將外部的值動態注入到Bean中,可以為基本類型數據和String類型數據的變量注入數據
案例:
// 1.基本類型數據和String類型數據的變量注入數據@Value("tom")private String name;@Value("18")private Integer age;// 2.從properties配置文件中獲取數據並設置到成員變量中// 2.1jdbcConfig.properties配置文件定義如下jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/eesyjdbc.username = rootjdbc.password = root// 2.2獲取數據如下@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url; @Value("${jdbc.username}")private String username; @Value("${jdbc.password}")private String password;
3)用於改變bean作用範圍的註解
3.1
作用:
指定bean的作用範圍。
屬性:
value: 1)singleton:單例 2)prototype:多例 3)request: 4)session: 5)globalsession:
案例:
@Autowire@Scope(value="prototype")private UserService userService;
4)生命周期相關的註解
4.1
作用:
指定初始化方法
案例:
@PostConstruct public void init() { System.out.println("初始化方法執行");}
4.2
作用:
指定銷毀方法
案例:
@PreDestroy public void destroy() { System.out.println("銷毀方法執行");}
5)配置類相關的註解