前言:
學習完了mybatis之後,開始了spring的學習。
學習mybatis做的筆記如下:
https://blog.csdn.net/qq_39627843/article/details/103186701
準備工作:
建立maven工程,去pom文件寫jar包座標
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
在resources目錄下建一個叫bean.xml的文件,內容如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="UserService" class="com.bowen.service.UserService"></bean>
</beans>
這裏的意思是,我們註冊了一個userService的全限定類名,有一個id屬性,通過id,我們以後就可以拿到一個這個對象
目錄結構如下
然後ui包裏面的client調用了userservice的方法,這裏就是使用到spring的地方
client類如下:
package com.bowen.ui;
import com.bowen.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
public static void main(String[] args) {
//UserService service = new UserService();
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
UserService userService = (UserService) context.getBean("UserService");
userService.print();
}
}
使用註解開發:
看到網上寫的很好的一篇博客,推薦一下,我也正處於學習階段,還是得多學習下別人的纔行
https://www.cnblogs.com/xzh0717/p/10843370.html
第一部分:這一步其實是從xml配置到註解的過渡,中間還是使用了xml配置,下一部分完全擺脫了xml配置
之前在使用xml配置bean的時候命名空間和註解開發不一樣,這裏附上:
<!--註解使用的頭-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--xml配置使用的頭-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
①創建類對象
幾種註解如下:
@Component 寫在某個類前面,表示將類加入到spring容器中,到時候可以由一個值 通過spring內部的反射機制獲取到類對象,這個註解可以傳入參數,表示通過哪一個值可以獲取到這個類對象,如果不寫,默認值是當前類的類名,首字母小寫。
下面三個功能其實差不多,只不過一般分別用在相應的層,如果非要用在其他層也是可以的
@Controller 用在控制層
@Service 用在業務層
@Repository 用在持久層
②注入數據
@Autowired 自動按照類型注入,可以寫在類變量上,也可以寫在方法上,機制是通過類型與容器中的類型匹配,如果有多個類
型匹配,則再按照變量名匹配。比如說
@Qualifier 類型有多個匹配時,Qualifier裏面的值指定它應該注入哪一個id對應的類。比如這樣
有兩個accountDao都加上了Component註解,存在於容器中,AccountDao1 和 AccountDao2,那麼現在是不知道用誰的,而qualifier裏面的值就能指定用accountDao1
注意:
註解在類變量上時,必須與@Autowired一起使用
@Resource 直接通過id指定,不需要與其他註解一起使用
以上三個註解只能注入其他數據類型,就是自己定義的類,對於基本數據類型以及String類型,不能注入,另外,集合類型只能用xml方式進行注入
基本數據類型的注入需要使用@Value註解。
@Scope scope註解可以定義bean的作用域,具體解釋如下
使用時,註解裏面加上這些就可以了,例如在某個類的前一行加上@Singleton,之後這個類就只會被創建一次
第二部分
全部使用註解來進行開發,不使用任何xml配置文件
首先我們要建一個類,替代剛纔xml配置文件的功能,位置和名稱都隨便。建完之後在類的前一行加上@Configuration註解,表示這是一個配置的類,spring會區分,再加上@ComponentScan,表示掃描哪一些包裏面的註解。