精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品久久一卡二卡| 亚洲激情影院| 91精品国产综合久久香蕉麻豆| 亚洲一卡二卡区| 99久久精品国产色欲| 韩国久久久久| 亚洲网站视频福利| 九九热精品国产| www中文字幕在线观看| 91蜜桃婷婷狠狠久久综合9色| 国产精品91在线| 日韩av手机在线免费观看| 日韩精品中文字幕吗一区二区| 性做久久久久久| 手机在线观看国产精品| www.久久伊人| 日韩成人一区二区三区在线观看| 麻豆乱码国产一区二区三区| 国产精品久久不卡| 欧美日韩卡一| 欧美午夜女人视频在线| 一区二区不卡在线视频 午夜欧美不卡'| www.天天干.com| 日韩精品乱码av一区二区| 久久久国产影院| aaaaaav| 亚洲午夜剧场| 色婷婷久久久亚洲一区二区三区| 精品一区二区三区毛片| 国产午夜在线观看| 成人一区二区在线观看| 国产精品女视频| 奇米影视第四色777| 91视频久久| 亚洲欧美日韩国产中文| 欧美一级大片免费看| av成人免费| 欧美视频一区二区三区…| 精品国产一区二区三区在线| 日本福利片在线| 国产99久久久久| 国产在线播放91| 激情五月婷婷网| 影音先锋久久久| 另类美女黄大片| 东方伊人免费在线观看| 婷婷五月色综合香五月| 精品国产乱码久久久久久免费| 粉色视频免费看| 成人在线黄色| 在线免费av一区| 成人毛片视频网站| aaa在线播放视频| 亚洲综合色自拍一区| 青春草在线视频免费观看| 国产69精品久久app免费版| 91免费精品国自产拍在线不卡| 国产不卡一区二区在线观看 | 色婷婷av一区二区三区之红樱桃| 韩国成人福利片在线播放| 成人免费看片视频| 一级片aaaa| 美女脱光内衣内裤视频久久影院| 国产精品高潮呻吟久久av黑人| 国产成人综合欧美精品久久| 亚洲一区一卡| 日本精品中文字幕| 无码人妻一区二区三区免费| 日韩精品成人一区二区在线| 日本免费久久高清视频| 销魂美女一区二区| 青草国产精品久久久久久| 国产精品视频色| 国产又粗又猛又黄又爽无遮挡| 精品一区二区三区在线播放| 国产日韩欧美在线看| 国产欧美一级片| 国产精品一级片| 粉嫩高清一区二区三区精品视频| 少妇又色又爽又黄的视频| 99视频在线观看一区三区| 久久亚洲精品欧美| 国产在线日本| 中文字幕五月欧美| 成人在线免费观看视频网站| 丁香花电影在线观看完整版| 狠狠躁18三区二区一区| 国产精品无码av无码| 久久久久伊人| 欧美一二三在线| 中文字幕在线播放视频| 精品高清在线| 久久精品色欧美aⅴ一区二区| 久草网视频在线观看| 亚洲在线视频| 91精品免费看| 日本人妻熟妇久久久久久| 久久综合久久综合久久| 影音先锋亚洲视频| eeuss鲁一区二区三区| 色琪琪一区二区三区亚洲区| 天堂在线一区二区三区| 欧美sss在线视频| 伊人久久久久久久久久久| 精品一区在线观看视频| 免费在线亚洲| 91久久久国产精品| 天堂在线中文资源| 中文字幕日本不卡| 日韩av三级在线| 久久久久毛片| 日韩激情av在线播放| 午夜黄色福利视频| 国产精品久久久久久久久久妞妞| 成人精品视频在线| 香蕉视频黄色片| 亚洲视频在线一区观看| 免费毛片小视频| 国产精品麻豆| 一区二区三区无码高清视频| 国产在线拍揄自揄拍| 麻豆高清免费国产一区| 久久国产精品精品国产色婷婷| 免费黄色在线网站| 在线亚洲人成电影网站色www| 欧美一级片在线免费观看| 成人午夜av| 欧美性受xxxx黑人猛交| 亚洲不卡免费视频| 国产精品二三区| 嫩草av久久伊人妇女超级a| 国产精品巨作av| 中文字幕精品www乱入免费视频| 国产精品第56页| 国产麻豆精品久久一二三| 亚洲国产日韩欧美| 免费观看一级欧美片| 亚洲第一二三四五区| 性色av无码久久一区二区三区| 奇米影视一区二区三区| 久久久久久九九| wwwww亚洲| 欧美一区二区三区性视频| 在线观看日本黄色| 久久久久久穴| 麻豆成人av| 国产高清视频色在线www| 日韩精品一区二区在线| 久久噜噜色综合一区二区| 奇米四色…亚洲| 日韩精品欧美在线| 成人性生活av| 亚洲欧美在线免费观看| 亚洲精品男人的天堂| 91污在线观看| 爱福利视频一区二区| 亚洲小说图片视频| 国产69久久精品成人看| 三级毛片在线免费看| 欧美日韩亚洲成人| av网站免费在线播放| 免费看亚洲片| 欧洲在线视频一区| 欧美影视资讯| 日韩一区二区福利| 国产日韩欧美视频在线观看| 亚洲欧美成aⅴ人在线观看| 男人操女人下面视频| 自产国语精品视频| av一区二区三区在线观看| 特级毛片在线| 亚洲黄色免费三级| 国产精品suv一区| 久久亚洲综合色一区二区三区| 久久久一本二本三本| 国产欧美一区二区三区精品观看| 国产精品91免费在线| 黄色免费在线看| 日韩精品综合一本久道在线视频| 国产午夜精品无码| 久久免费视频一区| 五月天av在线播放| 午夜性色一区二区三区免费视频| 国产精品一区二| 久久久久久久| 久久这里有精品| 天堂av在线免费| 欧美日韩美女在线| www成人啪啪18软件| 国产成人h网站| 黄色a级片免费| 99精品全国免费观看视频软件| 91国产在线播放| 超级碰碰久久| 欧美成人午夜激情视频| 午夜av免费在线观看| 欧美亚洲一区三区| 久久精品www| 国产日韩精品一区| gogo亚洲国模私拍人体| 欧美亚洲三级| 亚洲av综合色区| 国产精品最新| 99九九视频| 成人午夜sm精品久久久久久久| 久久99国产综合精品女同| 天堂成人在线| 欧美一区二区三区在线视频 | 在线观看亚洲a| 九九九在线视频| 欧美国产综合色视频| 国产伦精品一区二区三区88av| 日韩精品免费视频人成| 国产精品久久..4399| 欧美r级电影| 久久久99爱| 中文久久电影小说| 国产精品普通话| 亚洲美女尤物影院| 久久99热这里只有精品国产| 国产免费av高清在线| 亚洲成色www8888| 国产极品久久久| 欧美色视频在线| 国产www在线| 亚洲18色成人| 九九视频在线免费观看| 国产精品色在线观看| 人妻丰满熟妇aⅴ无码| 国产馆精品极品| 午夜剧场高清版免费观看| 香蕉成人久久| 丰满少妇久久久| 欧美激情综合色综合啪啪| 亚洲视频在线二区| 精品大片一区二区| 日本免费高清一区二区| 天海翼精品一区二区三区| 都市激情久久久久久久久久久| www.久久草.com| 成人观看高清在线观看免费| 欧美free嫩15| 国产成人午夜视频网址| 伊人久久av| 青青草精品毛片| 在线观看爽视频| 97超碰色婷婷| 深夜成人在线| 97国产精品久久| 1234区中文字幕在线观看| 欧美极品欧美精品欧美视频 | 99久久精品国产色欲| 欧美精品黑人性xxxx| 91禁在线观看| 9191久久久久久久久久久| 亚洲天堂999| 欧美日韩精品电影| 97成人免费视频| 欧美日韩一区高清| 国产精品无码天天爽视频| 欧美一区二区三区在线看| 精品国产一级片| 亚洲电影天堂av| 亚洲三区在线观看无套内射| 亚洲美女中文字幕| 成人性生交大片免费看午夜| 亚洲天堂av在线免费| 超碰免费在线| 日韩亚洲国产中文字幕| www.欧美日本韩国| 久久久久久亚洲| 伊伊综合在线| 国产精品女人网站| 欧美特黄不卡| 国产专区一区二区| 国产va免费精品观看精品视频| 深夜福利成人| 中文精品电影| 日韩五码在线观看| 日韩在线观看一区二区| 99国产精品久久久久久| 懂色av中文一区二区三区 | 国产主播性色av福利精品一区| 精品一区二区久久久久久久网站| 国产欧美日韩视频在线| 日韩国产精品毛片| 在线日韩欧美| 成人精品小视频| 国产一区二三区| japanese在线观看| 久久久www成人免费毛片麻豆| 波兰性xxxxx极品hd| 亚洲一二三区不卡| 日韩不卡高清视频| 日韩欧美二区三区| 偷拍25位美女撒尿视频在线观看| 中文字幕av一区二区| heyzo高清中文字幕在线| 国产精品电影一区| 午夜电影一区| 日本高清不卡一区二区三| 影视亚洲一区二区三区| 国产成人a亚洲精v品无码| 精品一区二区三区香蕉蜜桃| 久久久久久久久免费看无码| 中文乱码免费一区二区| 日产欧产va高清| 欧美日韩精品免费观看视频| 人妻精品一区一区三区蜜桃91 | www.欧美日本韩国| 国产mv久久久| av日韩精品| 在线观看成人av| 国产亚洲精品v| 一级黄色大片儿| 国产人成亚洲第一网站在线播放| 精品97人妻无码中文永久在线| 91国产福利在线| 欧洲成人一区二区三区| 久久在线精品视频| 成人亚洲网站| 欧美一区二区影视| 亚洲人成在线影院| 中文字幕乱码在线人视频| 欧美激情一区二区三区四区| 五月天婷婷综合网| 欧美成人a∨高清免费观看| 免费大片黄在线| 国产精品美女主播在线观看纯欲| 青青草久久爱| 欧美乱大交xxxxx潮喷l头像| 精品一区二区三区视频 | 国产视频一二三四区| 一个人www欧美| 亚洲男人av| 精品综合久久| 尤物在线精品| 一级黄色大片免费看| 亚洲视频免费在线| 糖心vlog精品一区二区| 亚洲性猛交xxxxwww| 日本午夜大片a在线观看| 国模精品一区二区三区| 伊人精品在线| 在线免费看黄色片| 亚洲图片欧美色图| 欧美视频久久久| 国模精品系列视频| 精品久久97| 久久亚洲中文字幕无码| a级精品国产片在线观看| av资源吧首页| 亚洲第一精品电影| 国产美女福利在线观看| 翡翠波斯猫1977年美国| 中文字幕久久精品一区二区| 最新中文字幕久久| 国产成人在线免费观看| 久久激情免费视频| 亚洲国产精品美女| bl视频在线免费观看| 精品在线观看一区二区| 午夜亚洲精品| 亚洲精品午夜视频| 欧美日韩国产精品成人| 国产福利电影在线| 成人激情视频网| 欧美福利影院| 亚洲黄色免费在线观看| 欧美性感美女h网站在线观看免费| 美女做暖暖视频免费在线观看全部网址91 | 韩国三级在线看| 亚洲视频你懂的| 人妻91麻豆一区二区三区| 欧美综合激情网| 久久五月天小说| 日本xxxx免费| 五月天久久比比资源色| 毛片网站在线观看| 成人精品一区二区三区电影免费 | 国产 日韩 欧美在线| 91亚洲国产成人精品一区二三| 久久精品无码av| 色yeye香蕉凹凸一区二区av| 91精品一区| 人妻无码一区二区三区四区| 91丝袜美腿高跟国产极品老师 | 中文字幕第24页| 欧美一级片免费看| 2022成人影院| 亚洲高清资源综合久久精品| 国产成人超碰人人澡人人澡| 日韩在线播放中文字幕| 久久影视电视剧免费网站清宫辞电视| 成人性生交大片免费看中文视频| 91av在线免费播放| 亚洲麻豆国产自偷在线| 日本护士...精品国| 亚洲自拍高清视频网站| 免费日韩av|