一、註解的概述spring
註解是爲了便於程序的調試而用於代替配置文件的一種程序語法,與配置文件具備互換性。一般基於註解編程的程序更加簡潔。編程
(注:使用Spring註解必須導入aop包)框架
二、Spring組件註解工具
Spring組件註解做用在類上,用於聲明該類爲組件類。在Spring 框架啓動時,自動掃描組件類建立實例對象並存放在Spring容器中。Spring的組件註解有單元測試
①@Controller:聲明表示層的組件類; ②@Service:聲明服務層的組件類;測試
③@Repository:聲明持久層的組件類; ④@Component:聲明其它的組件類。ui
(注:①Spring的4個組件註解在功能上是沒有差異的,交換使用結果相同;②組件類的對象名默認爲類名的首字母小寫形式,組件註解的value屬性能夠設置對象名)this
三、<context:component-scan>標籤——掃描器的配置編碼
——base-package屬性:指定須要掃描的包。spa
<context:component-scan base-package="cn"/>
四、Spring依賴注入的註解
(1)@Autowired註解——自動注入容器的對象
①在屬性上注入:注入該屬性; ②在方法上注入:注入該方法的參數; ③在構造方法上注入:注入該構造方法的參數;
(注:①@Autowired 註解默認容許注入的對象爲空,能夠經過equired屬性設置;②添加@Autowired 註解的方法和構造方法在項目啓動的時候將自動執行;③無參的方法和構造方法不支持使用@Autowired註解)
(2)@Qualifier註解——設置注入的對象名
——value屬性:指定注入 Spring 容器中的對象名;
(注:@Autowired沒有指定對象名的屬性,只能經過@Qualifier註解指定容器中的對象名)
(3)@Resource註解——注入容器的對象
——name屬性:指定注入 Spring 容器中的對象名;
(注:①@Resource註解在功能上是@Autowired和@Qualifier註解的合併註解;②@Resource不能在構造方法上注入)
(4)@Value註解——注入標量數據
——@Value註解用於注入標量數據,並支持注入Properties文件的鍵值對。
public class Manager { @Value("zhangsan") private String name; @Value("${manager.age}") private int age; @Autowired @Qualifier(value="customer01") private Customer customer = null; @Autowired(required=false) public Manager(Customer customer) { super(); this.customer = customer; } @Resource(name="customer01") public void saveCustomer(Customer customer) { this.customer = customer; } }
①@Scope註解——指定示例對象的生命週期
——value屬性:設置建立的Spring對象的生命週期;
②@PostConstruct註解——指定Spring對象的初始化方法;
③@PreDestroy註解——指定Spring對象的銷燬方法。
@Service @Scope(value="singleton") public class CustomerService { @PostConstruct public void init(){ System.out.println("--對象初始化--"); } @PreDestroy public void destroy(){ System.out.println("--對象銷燬--"); }
}
六、Spring純註解配置
①@Configuration註解
該註解標示當前類是Spring 的配置類,該類用於代替Spring的XML配置文件;
②@ComponentScan註解
該註解用於配置掃描Spring組件類的路徑;
——value/basePackages屬性:用於指定要掃描的包;
③@PropertySource註解
該註解用於配置須要加載的Properties文件;
——encoding屬性:指定編碼格式;
——value屬性:指定 properties 文件位置;
④@Bean註解
該註解用於將經過方法建立的對象存放在Spring容器中;
——name屬性:設置對象名;
⑤@Import註解
該註解用於導入其餘配置類;
——value屬性:指定配置類。
@Configuration @ComponentScan(basePackages="cn") @Import(value=Config.class) @PropertySource(encoding="UTF-8",value="classpath:sys.properties") public class Myconfiguration { @Bean public Date getDate() { return new Date(); } }
(注:①基於純註解聲明的對象將存放在AnnotationConfigApplicationContext容器中②在須要指定文件的路徑時,當文件在類路徑下時其路徑爲「classpath:[文件名]」)
七、獲取Spring註解容器的對象
@Test public void springTest() { //一、建立spring容器 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Myconfiguration.class); //二、獲取Customer實例對象 Customer customer= context.getBean("customer", Customer.class); customer.save(); //三、調用對象的方法 context.close(); //四、關閉Spring容器,釋放資源
}
Junit是單元測試工具,Spring 框架提供test包對 Junit 單元測試工具進行了整合。
①@RunWith註解
——value屬性:指定使用的單元測試執行類;
②@ContextConfiguration註解
——classes屬性:指定配置類。
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=Myconfiguration.class) public class SpringTest{ @Autowired private Customer customer; @Text public void springTest() { customer.save(); } }
———————————————————————————————————————————————————————————————————
The end @ 萬有引力+
-
-
-
-
-