精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring的Java配置方式,告別XML配置

開發 前端
在Spring1.x時代,都是通過xml文件配置bean,隨著項目的不斷擴大,需要將xml配置分放到不同的配置文件中,需要頻繁的在java類和xml配置文件中切換。

剛使用Spring框架時一般都是通過xml配置文件的方式,進而使用注解方式實現,我們再來學習一種使用Java類配置的方式,也稱為Java Config來配置Spring框架。這種方式讓我們告別XML文件,完全通過Java體系內的技術點實現。

好處就在于,在開發過程中不需要在Java類和XML文件中來回切換,而是僅僅編寫Java即可。

SpringBoot中,也都是通過該方式實現的配置。從Spring框架的發展歷史來漸漸深入吧!

一、Spring的發展

這些版本其實無需記憶,了解版本之間的大概變化即可

1.1 Spring 1.X時代

在Spring1.x時代,都是通過xml文件配置bean,隨著項目的不斷擴大,需要將xml配置分放到不同的配置文件中,需要頻繁的在java類和xml配置文件中切換。

1.2 Spring2.X時代

隨著JDK 1.5帶來的注解支持,Spring2.x可以使用注解對Bean進行聲明和注入,大大的減少了xml配置文 件,同時也大大簡化了項目的開發。

那么,問題來了,究竟是應該使用xml還是注解呢?

最佳實踐:

  • 應用的基本配置用xml,比如:數據源、資源文件等;
  • 業務開發用注解,比如:Service中注入bean等;

1.3 Spring3.X和Spring4.X時代

從Spring3.x開始提供了Java配置方式,使用Java配置方式可以更好的幫助你配置的Bean,并且Spring4.x和Spring boot都推薦使用Java配置的方式

目前我們公司在使用Spring5版本,就在本月【2022年11月】Spring 6也發布了,不過要求使用Java 17及以上版本,后續企業可能會慢慢迭代吧!企業中暫時不會使用這么新的技術

二、Spring的Java配置方式

說明:Java配置方式也是Spring4.X推薦使用的方式,作用呢是可以完全替代XML配置,我們就不需要在XML文件和Java類中頻繁的切換開發,我們可以完全面向Java語言做開發。

在實戰之前我們需要知道這么幾個注解

2.1、@Configuration 和 @Bean

看到這兩個標簽相信有些朋友就已經知道這兩個標簽的作用了。

說明:Spring的Java配置是通過@Configuration和@Bean兩個注解實現

@Configuration:作用在類上,說明該類相當于一個xml文件

@Bean:作用在方法上,返回對象,將對象存放在Spring容器中,相當于xml文件中的<bean>標簽

接下來我們通過一個案例使用Java配置的方式實現Spring框架的配置和使用

三、案例1

首先貼出我們的最終的項目結構

3.1 案例描述

通過使用Java配置的方式實現Spring的bean管理,簡單的說使用使用Java類替代xml配置文件實現用戶的查詢,我們這里將數據封裝到List集合中遍歷集合打印輸出。

3.2 實現

1)創建項目,創建普通項目導入jar包或者創建maven項目都行,這里創建maven項目,貼出項目結構和pom.xml配置

版本可以隨意切換

<!-- 定義jar包版本 --><properties><!-- 單元測試 --><junit.version>4.12</junit.version><!-- spring版本 --><spring.version>5.1.2.RELEASE</spring.version>

</properties><!-- 引入spring依賴 --><dependencies><!-- 單元測試 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency></dependencies>

2)編寫User類

public class User {
private String userName;
private String userPass;
private Integer userId;
public User(){
super();
}
public User(String userName, String userPass, Integer userId){
super();
this.userName = userName;
this.userPass = userPass;
this.userId = userId;
}
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName = userName;
}
public String getUserPass(){
return userPass;
}
public void setUserPass(String userPass){
this.userPass = userPass;
}
public Integer getUserId(){
return userId;
}
public void setUserId(Integer userId){
this.userId = userId;
}
@Overridepublic String toString(){
return "User [userName=" + userName + ", userPass=" + userPass + ", userId=" + userId + "]";
}
}

3)編寫Dao層,使用List集合模擬數據庫,實現數據交互

public class UserDao {

public List<User> queryAll(){
List<User> users = new ArrayList<User>();
//添加用戶,模擬數據庫for(int i = 1;i < 11;i++) {
User user = new User("張三"+i, "123456", i);
users.add(user);
}
//返回用戶return users;
}
}

4)編寫Service層,實現用戶業務邏輯

public class UserService {

//注入Dao層對象@Resourceprivate UserDao userDao;

public List<User> queryAll(){
return userDao.queryAll();
}
}

小貼士:我們這里的dao層和service層沒有寫接口

5)編寫Spring配置類,替代XML文件,用于實例化Spring容器

//說明該類是一個配置類,相當于一個xml文件
@Configuration
//掃描包
@ComponentScan(basePackages="com.stt")
public class SpringConfig {

//創建dao層對象@Beanpublic UserDao userDao(){
return new UserDao();
}
//創建Service對象@Beanpublic UserService userService(){

return new UserService();
}
}

小貼士:這個類就是我們的配置類,可以看出我們這里使用了三個注解,這幾個注解我們在上邊說過了,這里就不在贅述。

6)編寫測試類,啟動Spring容器,并完成測試

public class SpringApplication {
public static void main(String[] args){
//獲取SpringConfig類中的所有配置
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
//獲取Service對象
UserService userService = context.getBean(UserService.class);
//調用方法
List<User> list = userService.queryAll();
for (User user : list) {
System.out.println(user);
}
//銷毀容器
context.close();
}
}

通過以上示例我們簡單完成使用Java配置方式實現bean管理。其中重點在于配置類和其中的三個注解。

四、案例2

4.1 案例描述

我們在開發項目中會連接數據庫,而且數據的配置寫在db.properties文件中,我們需要讀取該文件并且配置數據源,我們這個案例就來實現連接數據庫,并且使用dbcp數據庫連接池。

4.2 問題

1)使用Java配置怎么讀取db.properties文件

2)讀取出來之后怎么給dbcp連接池中的driver,url等屬性賦值

那么我們帶著問題看以下代碼配置,在原先配置類的基礎上進行修改

配置類:

//說明該類是一個配置類,相當于一個xml文件
@Configuration
//掃描包
@ComponentScan(basePackages="com.stt")
//讀取外部配置文件
@PropertySource(value="classpath:resource/db.properties")

public class SpringConfig {

//創建dao層對象@Beanpublic UserDao userDao() {
return new UserDao();
}
//創建Service對象@Beanpublic UserService userService() {

return new UserService();
}
//獲取文件中的值,使用Value注解賦值給變量保存起來//注意:我們使用${}表達式獲取值,參數與配置文件中的鍵一致@Value("${driver}")private String driver;
@Value("${url}")private String url;
@Value("${user}")private String user;
@Value("${pass}")private String pass;
//配置數據庫連接池@Beanpublic DataSource dataSource() {
//創建DBCP連接池對象
BasicDataSource dataSource = new BasicDataSource();
//設置屬性
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(pass);
return dataSource;
}

}

測試類:

public class SpringApplication {
public static void main(String[] args){
//獲取SpringConfig類中的所有配置
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
//獲取Service對象
UserService userService = context.getBean(UserService.class);
//獲取數據源對象
BasicDataSource dataSource = (BasicDataSource)context.getBean("dataSource");
System.out.println(dataSource);

//調用方法/*List<User> list = userService.queryAll();
for (User user : list) {
System.out.println(user);
}*///銷毀容器
context.close();
}
}

小貼士:

1)@PropertySource:我們可以使用該注解讀取外部配置文件

如何引入多個配置文件?

@PropertySource(value = {"classpath:db.properties","其他文件路徑"})

如果文件不存在怎么辦?

添加ignoreResourceNotFound屬性改為true,文件不存在時也不會報錯

@PropertySource(value = {"classpath:db.properties","xxx"},ignoreResourceNotFound = true)

2)@Value:我們使用該注解給變量注入固定的值

五、總結

至此我們使用Java配置方式完成spring的bean管理可以簡單使用了,其中我們使用了一個配置類和多個注解一起完成,希望可以幫助到讀者。

文章出自:??添甄??,如有轉載本文請聯系【添甄】今日頭條號。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2011-02-28 13:51:30

Spring事物配置

2009-06-19 18:26:38

Spring事務配置

2023-11-01 15:07:51

環境配置方式

2011-11-25 10:25:27

SpringJava

2009-06-18 11:15:53

裝配beanxml配置Spring

2025-07-08 07:15:00

Spring配置多種方式

2015-05-06 10:05:22

javajava框架spring aop

2010-08-03 09:20:33

Flex讀取XML配置

2025-07-28 01:45:00

@ValueSpring配置

2009-06-17 14:17:04

SpringXML配置文件

2009-06-17 14:36:10

SpringXML配置文件

2010-02-26 14:05:57

WCF通信方式

2018-07-11 15:32:57

KubernetesDNS方式

2023-08-07 16:14:32

propertiesSpring框架

2010-03-05 15:14:55

Ubuntu網絡配置

2009-07-14 14:08:35

Tapestry 5.web.xml的配置

2013-07-30 11:30:42

Windows PhoWindows Pho

2025-04-27 03:00:00

Spring集成測試

2009-07-07 14:11:07

XML來配置Servl

2009-07-17 16:49:18

iBATIS XML配
點贊
收藏

51CTO技術棧公眾號

欧美色视频一区| 国产福利视频一区二区三区| 亚洲精品一区二区网址| 国产福利一区视频| 岛国成人毛片| 99精品视频中文字幕| 国产不卡视频在线| www.色小姐com| 一本色道久久综合狠狠躁的番外| 欧美三级日韩在线| 17c丨国产丨精品视频| 美州a亚洲一视本频v色道| 国产综合久久久久久鬼色| 国语自产在线不卡| 欧美精品久久久久久久久46p| 好吊妞国产欧美日韩免费观看网站| 91黄色免费网站| www.九色.com| 日本高清视频在线观看| 成人黄色大片在线观看| 国产一区红桃视频| 天天操天天操天天操天天| 91精品国产乱码久久久久久久| 亚洲国产欧美精品| 久久久久久无码精品人妻一区二区| 午夜欧美巨大性欧美巨大 | 一区二区黄色片| 精品三级国产| 欧美日韩国产中文| 黑森林福利视频导航| 中文国产字幕在线观看| 亚洲国产电影在线观看| 久久天天狠狠| 天堂在线资源网| 国产精品一二三四五| 国产欧美日韩丝袜精品一区| 国产精品久久久久久久久久久久久久久久久| 亚洲综合中文| 日韩中文字幕在线观看| 91精品国自产在线| 免费欧美激情| 日韩成人av网| 97香蕉碰碰人妻国产欧美| 视频精品一区二区三区| 91精品国产综合久久久久| 亚洲欧洲日本精品| 视频一区在线免费看| 欧美午夜女人视频在线| 日韩精品―中文字幕| 91破解版在线观看| 亚洲成在线观看| 天天做天天躁天天躁| av毛片在线免费看| 一区二区三区在线不卡| 麻豆传媒网站在线观看| a毛片在线看免费观看| 亚洲私人影院在线观看| 影音先锋欧美资源| 国产在线观看av| 亚洲人xxxx| 男人草女人视频| 欧美日韩色网| 亚洲va韩国va欧美va精品| 日本a在线免费观看| 老色鬼在线视频| 欧美日韩一区二区精品| 成人在线看视频| 成人在线网站| 欧美高清视频不卡网| 手机av在线免费| 国产人与zoxxxx另类91| 欧美xxxx老人做受| 国产激情视频网站| 久久成人av| 中文字幕日韩视频| 全网免费在线播放视频入口| 国产精品va| 91禁外国网站| 免费看av在线| 国产一区二区看久久| 国产日韩一区二区三区| 国产专区在线| 亚洲男同1069视频| 国产美女主播在线| 日本久久免费| 91麻豆精品91久久久久同性| www.555国产精品免费| 国产精品美女久久久久久不卡| 中文字幕在线看视频国产欧美在线看完整 | 日韩精品一卡二卡| 天堂影院一区二区| 亚洲一区二区三区乱码aⅴ蜜桃女| 男人天堂网在线视频| 久久久久国产精品人| 五月天在线免费视频| 在线观看涩涩| 6080亚洲精品一区二区| 国产精品久久久免费观看| 久久亚洲精品中文字幕蜜潮电影| 欧美激情亚洲综合一区| 一级久久久久久| 国产成人一级电影| 热re99久久精品国产99热| 99在线播放| 91精品1区2区| yjizz视频| 日韩系列欧美系列| 97香蕉久久夜色精品国产| 一个人看的www日本高清视频| 丁香另类激情小说| 综合国产精品久久久| 亚洲性受xxx喷奶水| 日韩免费电影一区| 日本免费网站视频| 久久久天天操| 国产伦精品一区| 欧美性videos| 日本韩国一区二区三区视频| 午夜影院福利社| 午夜影院欧美| 国产精品一区二区三| 四虎影院在线播放| 亚洲一区二区四区蜜桃| 蜜臀一区二区三区精品免费视频 | 一区二区三区三区在线| 在线人成日本视频| 亚洲第一中文字幕| 免费在线观看av网址| 精久久久久久久久久久| 亚洲精品二区| 99热播精品免费| 亚洲欧美日韩国产中文| 秋霞av国产精品一区| 精品久久久久久久久久国产| 日韩av电影免费观看高清| 国产成人精品免费看视频| 在线观看麻豆| 黄色a级片在线观看| 日本1级在线| 亚洲精品伦理在线| 日韩理论片久久| 国内精品久久久久影院优| 亚洲综合网在线| 日韩av一二三| 久久综合九色综合网站| 俺来俺也去www色在线观看| 日韩欧美成人激情| 草视频在线观看| 国产一区在线不卡| 日本精品一区二区三区高清 | 色噜噜狠狠成人网p站| 麻豆tv在线观看| 欧美在线二区| 91九色蝌蚪成人| 99视频免费在线观看| 搞黄网站在线看| 国产精品久久久久久久久久久久久久久久| 波多野结衣中文在线| 欧美性猛交xxxx黑人交| 欧美一区二区三区小说| 国内精品久久久久久久久| 日韩精品一区三区| 成人免费视频一区二区| 99久久免费观看| 亚洲精品高潮| 欧美激情视频在线免费观看 欧美视频免费一| 国产免费的av| 一区二区高清免费观看影视大全 | 久久性爱视频网站| 在线成人欧美| 久久精品美女| 日韩高清在线| www.亚洲成人| 亚洲乱码在线观看| 午夜国产精品一区| 在线观看日本中文字幕| 久久狠狠亚洲综合| 久久久国内精品| 亚洲人成精品久久久| 国产精品久久久久91| 国内外激情在线| 日韩av在线天堂网| 亚洲无码久久久久| 亚洲午夜三级在线| 国产精品无码一区二区三区免费| 日韩在线一二三区| 日韩精品福利片午夜免费观看| 超碰地址久久| 国产精品美腿一区在线看| 久久久久久青草| 在线观看国产91| 欧美日韩综合一区二区| 91免费在线视频观看| 尤物国产在线观看| 亚洲大胆av| 亚洲人一区二区| 91精品国产自产在线丝袜啪| 热久久免费国产视频| 国产午夜精品久久久久免费视| 亚洲精品在线三区| 中文有码在线播放| 天天综合网天天综合色| 日韩免费av一区| av亚洲精华国产精华精| 亚洲欧美日本一区二区三区| 亚洲国产激情| 熟妇熟女乱妇乱女网站| 亚洲瘦老头同性70tv| 91免费看国产| 青青热久免费精品视频在线18| 欧美精品激情在线| 91av资源在线| 亚洲欧美激情视频| 亚洲成人第一区| 欧美日韩一级大片网址| 一级片中文字幕| 一区二区三区欧美亚洲| 四季av中文字幕| 91视频在线观看免费| 日本少妇xxx| 久久国产精品99久久人人澡| 女人扒开屁股爽桶30分钟| 好看不卡的中文字幕| 一区二区三区国产福利| 少妇精品久久久一区二区| 国产精品精品软件视频| 狂野欧美xxxx韩国少妇| 国产精品香蕉av| 午夜无码国产理论在线| 51精品在线观看| 51精品在线| 久久99精品久久久久久青青91| 日本在线免费网| 中文一区二区视频| 国产黄色片在线播放| 亚洲免费影视第一页| 日韩在线观看视频网站| 精品国产第一区二区三区观看体验| 国产精品九九九九| 欧美日韩国产一级二级| 免费精品一区二区| 色婷婷亚洲精品| 久久国产精品免费看| 天天做天天摸天天爽国产一区| 国产在线欧美在线| 亚洲午夜影视影院在线观看| 久久国产在线观看| 一区二区不卡在线播放 | 亚洲欧洲视频在线观看| 亚洲第一中文字幕| 色偷偷在线观看| 亚洲第一精品电影| 五月激情六月婷婷| 亚洲精品午夜精品| 国产黄色片在线观看| 国产亚洲综合久久| 成人免费在线视频网| 一区二区三区在线播放欧美| 香蕉视频在线免费看| www.久久色.com| xvideos国产在线视频| 美女视频久久黄| www.8ⅹ8ⅹ羞羞漫画在线看| 性欧美xxxx视频在线观看| xx欧美xxx| 国产精品网站视频| 精品视频在线观看免费观看| 粉嫩精品一区二区三区在线观看 | 国产美女久久久久久| 亚洲精品国产视频| 国产午夜激情视频| 日韩欧美一区二区在线| 在线播放亚洲精品| 日韩欧美电影一二三| 天天干视频在线观看| 一区二区三区 在线观看视| 麻豆视频在线观看免费网站| 欧美激情精品久久久久久变态| ririsao久久精品一区| 日韩av电影院| 成人精品视频在线观看| 国产伦精品一区二区三毛| 精品国产99| 欧美做暖暖视频| 羞羞答答国产精品www一本| 免费看污污网站| 国产91在线|亚洲| 右手影院亚洲欧美| 国产精品国产三级国产a| 欧美国产在线看| 一本大道av一区二区在线播放| 亚洲综合免费视频| 亚洲国产精品网站| 欧美被日视频| 欧美一级片一区| 国产成年精品| 久久偷窥视频| 欧美一区综合| www.xxx亚洲| 国产suv一区二区三区88区| 国产精品成人一区二区三区电影毛片 | 国产精品扒开腿做爽爽爽a片唱戏| 久久精品免费在线观看| 欧产日产国产v| 在线一区二区视频| 国 产 黄 色 大 片| 这里只有精品丝袜| 蜜桃av在线播放| 7777精品伊久久久大香线蕉语言 | 亚洲人永久免费| 青草影视电视剧免费播放在线观看| 国产精品久久久久77777| 欧美在线关看| 日韩欧美一级在线| 免费高清成人在线| 日本xxx在线播放| 亚洲午夜国产一区99re久久| 亚洲无码久久久久| 亚洲男人的天堂在线播放| 女同视频在线观看| 亚洲自拍小视频免费观看| 欧美先锋资源| 国产精品亚洲αv天堂无码| 盗摄精品av一区二区三区| 日本aⅴ在线观看| 欧美性极品少妇| 国外av在线| 日韩av免费在线观看| 欧美亚洲色图校园春色| www.日本在线视频| 国产精品456| 日韩三级在线观看视频| 欧美日韩国产在线播放网站| 国产无套粉嫩白浆在线2022年| 97色在线观看| 国产毛片久久久| www.成年人视频| 粉嫩av一区二区三区| 欧美三级 欧美一级| 欧美一区二区精品| 国产激情视频在线| 92国产精品久久久久首页| 天天做天天爱天天综合网| 中文字幕在线观看第三页| 久久精品男人的天堂| 中文字幕日韩免费| 伊人久久久久久久久久久久久 | 91沈先生作品| 国产精品久久久久无码av| 亚洲视频第二页| 国产精品不卡在线| 国产熟女一区二区三区五月婷| 日韩中文字幕第一页| 96sao精品免费视频观看| 一区二区三区欧美成人| 国产在线不卡一区| 免费视频一二三区| 亚洲成人久久电影| 成人免费观看在线观看| 久久久久久国产精品mv| 亚洲欧美视频| 一区二区伦理片| 欧美日韩精品三区| 在线看三级电影| 精品久久久久久一区二区里番| 亚洲一区二区三区免费在线观看| 国产精品无码久久久久久| 欧美视频13p| www.在线播放| 亚洲影院色无极综合| 伊人久久成人| 国产精品成人无码免费| 欧美日韩一区二区在线观看 | 欧美精品国产白浆久久久久| 欧美日韩第二页| 国产精品网站在线观看| 国产特黄一级片| 91高潮在线观看| 日韩三级在线| 欧美做受高潮中文字幕| 日韩欧美一区二区三区久久| 九七久久人人| 国产视频精品网| 免费的成人av| 日本五十熟hd丰满| 一区二区三欧美| 伊色综合久久之综合久久| 日韩av片在线看| 最新日韩在线视频| 天堂网2014av| 国产精品亚洲一区二区三区| 欧美三区在线| 色欲狠狠躁天天躁无码中文字幕 | 欧美hd在线| 中文字幕在线观看91| 欧洲精品在线观看| 国产天堂在线播放视频| 亚洲激情一区二区| www.欧美色图| 国产乱人乱偷精品视频a人人澡|