日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Spring的Java配置方式,告別XML配置

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

10余年的崖州網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整崖州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“崖州網(wǎng)站設計”,“崖州網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

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

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

一、Spring的發(fā)展

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

1.1 Spring 1.X時代

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

1.2 Spring2.X時代

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

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

最佳實踐:

  • 應用的基本配置用xml,比如:數(shù)據(jù)源、資源文件等;
  • 業(yè)務開發(fā)用注解,比如:Service中注入bean等;

1.3 Spring3.X和Spring4.X時代

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

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

二、Spring的Java配置方式

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

在實戰(zhàn)之前我們需要知道這么幾個注解

2.1、@Configuration 和 @Bean

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

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

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

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

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

三、案例1

首先貼出我們的最終的項目結(jié)構(gòu)

3.1 案例描述

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

3.2 實現(xiàn)

1)創(chuàng)建項目,創(chuàng)建普通項目導入jar包或者創(chuàng)建maven項目都行,這里創(chuàng)建maven項目,貼出項目結(jié)構(gòu)和pom.xml配置

版本可以隨意切換

4.125.1.2.RELEASE

junitjunit${junit.version}testorg.springframeworkspring-context${spring.version}org.springframeworkspring-beans${spring.version}org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-aspects${spring.version}

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集合模擬數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)交互

public class UserDao {

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

4)編寫Service層,實現(xiàn)用戶業(yè)務邏輯

public class UserService {

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

public List queryAll(){
return userDao.queryAll();
}
}

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

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

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

//創(chuàng)建dao層對象@Beanpublic UserDao userDao(){
return new UserDao();
}
//創(chuàng)建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);
//調(diào)用方法
List list = userService.queryAll();
for (User user : list) {
System.out.println(user);
}
//銷毀容器
context.close();
}
}

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

四、案例2

4.1 案例描述

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

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 {

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

return new UserService();
}
//獲取文件中的值,使用Value注解賦值給變量保存起來//注意:我們使用${}表達式獲取值,參數(shù)與配置文件中的鍵一致@Value("${driver}")private String driver;
@Value("${url}")private String url;
@Value("${user}")private String user;
@Value("${pass}")private String pass;
//配置數(shù)據(jù)庫連接池@Beanpublic DataSource dataSource() {
//創(chuàng)建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);
//獲取數(shù)據(jù)源對象
BasicDataSource dataSource = (BasicDataSource)context.getBean("dataSource");
System.out.println(dataSource);

//調(diào)用方法/*List 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:我們使用該注解給變量注入固定的值

五、總結(jié)

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

文章出自:??添甄??,如有轉(zhuǎn)載本文請聯(lián)系【添甄】今日頭條號。


分享名稱:Spring的Java配置方式,告別XML配置
標題來源:http://www.5511xx.com/article/dpcidis.html