SpringBoot中的Condition包下常用條件依賴注解案例介紹
一、@ConditionalOnClass() Spring中存在指定class對象時,注入指定配置
和ConditionalOnBean()的區(qū)別在于ConditionalOnBean()是根據(jù)ioc里是否有此實(shí)例對象,而ConditionalOnClass()表示只要在Spring中有這個類就可以
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--用json來判斷是否創(chuàng)建bean-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.71</version>
</dependency>
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3.定義@ConditionalOnClass()配置類
name = "com.alibaba.fastjson.JSON" 表示此spring中是否有這個類,有的話就注入此配置到ioc
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CustomConditionOnClass {
@Bean
@ConditionalOnClass(name = "com.alibaba.fastjson.JSON")
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.啟動類測試
@ConditionalOnClass() Spring中存在指定class,對應(yīng)該配置才會生效
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
//@ConditionalOnClass() Spring中存在指定class,對應(yīng)該配置才會生效
@SpringBootApplication
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent); //Student{name='小白', age=12}
}
}
二、注入指定配置
@ConditionalOnMissingClass() Spring中不存在指定class對象時,注入指定配置
和ConditionalOnMissingBean()的區(qū)別在于ConditionalOnMissingBean()是根據(jù)ioc里沒有此實(shí)例對象,而ConditionalOnClass()表示只要在Spring中沒有這個類就可以
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--用json來判斷是否創(chuàng)建bean-->
<!--<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.71</version>
</dependency>-->
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3.定義@ConditionalOnMissingClass()配置類
name = "com.alibaba.fastjson.JSON" 表示此spring中是否有這個類,有的話就==不==注入此配置到ioc
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CustomConditionOnMissingClass {
@Bean
@ConditionalOnMissingClass("com.alibaba.fastjson.JSON")
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.啟動類測試
@ConditionalOnMissingClass Spring容器中==不存在==指定class,注入指定配置
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
//@ConditionalOnMissingClass Spring容器中不存在指定class,注入指定配置
@SpringBootApplication
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent); //Student{name='小白', age=12}
}
}
三、加載指定配置
@ConditionalOnBean() 根據(jù)ioc中判斷有沒有此實(shí)例對象,有則加載指定配置
和ConditionalOnClass()的區(qū)別在于ConditionalOnClass()是根據(jù)Spring中是否有此類,而ConditionalOnBean()表示在ioc中是否由此實(shí)例對象;
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}2.1 引入條件判斷實(shí)體類
將此類==注入==ioc容器
importorg.springframework.stereotype.Component;
@Component
Public class BeanServer{
}
3.定義@ConditionalOnBean()配置類
BeanServer.class :判斷ioc中是否有此類對象,==有==的話就加載此配置
import com.it.mhh.customConditionOnBeanOrOnMissingBean.server.TestServer;
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CustomConditionOnBean {
@Bean
@ConditionalOnBean(BeanServer.class)
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.啟動類測試
@ConditionalOnBean() Spring容器中==存在==指定class實(shí)例對象時,注入指定配置
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
//@ConditionalOnBean() Spring容器中存在指定class實(shí)例對象時,注入指定配置
@SpringBootApplication
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent); //Student{name='小白', age=12}
}
}
四、ioc中判斷
ConditionalOnMissingBean() 根據(jù)ioc中判斷有沒有此實(shí)例對象,沒有則加載指定配置
和ConditionalOnMissingClass()的區(qū)別在于ConditionalOnMissingClass()是根據(jù)Spring中是否有此類,而ConditionalOMissingnBean()表示在ioc中是否由此實(shí)例對象;
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2.1 引入條件判斷實(shí)體類
==不注入==此類到ioc容器
importorg.springframework.stereotype.Component;
//@Component
Public class BeanServer{
}
3.定義@ConditionalOnMissingBean()配置類
BeanServer.class :判斷ioc中是否有此類對象,==沒有==的話就加載此配置
import com.it.mhh.customConditionOnBeanOrOnMissingBean.server.TestServer;
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//@Configuration
public class CustomConditionOnMissingBean {
@Bean
@ConditionalOnMissingBean(BeanServer.class)
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.啟動類測試
@ConditionalOnMissingBean() Spring ioc中不存在指定class實(shí)例對象時,注入指定配置
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
//@ConditionalOnMissingBean() Spring容器中不存在指定class實(shí)例對象時,注入指定配置
@SpringBootApplication
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent); //Student{name='小白', age=12}
}
}
五、@ConditionalOnProperty()加載配置
@ConditionalOnProperty() 配置文件中配置的指定參數(shù)值符合要求時,加載此配置
與@ConditionalOnExpression()的區(qū)別在于@ConditionalOnProperty() 注解使用的是通過注解中的屬性賦值作為參照物和yml里的配置進(jìn)行匹配是否為相同;
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3.定義@ConditionalOnProperty() 配置類
prefix = "class",name = "teacher",matchIfMissing=false, havingValue = "小黑"
==@ConditionalOnProperty()中屬性含義==
public @interface ConditionalOnProperty {String[] value() default {}; // 數(shù)組,獲取對應(yīng)yml名稱的key,與name含義一樣,不能同時使用value和name;
String prefix() default ""; //配置文件中yml名稱的前綴;String[] name() default {};// 數(shù)組,獲取對應(yīng)yml名稱的key,與value含義一樣,不能同時使用value和name;String havingValue() default ""; //配置文件yml的value值boolean matchIfMissing() default false; //配置文件yml中沒有與之匹配到的數(shù)值,是否加載,true:表示正常加載此配置,false表示如果yml中沒有此數(shù)值就不加載;}
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CustomConditionOnProperty {
@Bean
@ConditionalOnProperty(prefix = "class",name = "teacher",matchIfMissing=false, havingValue = "小黑")
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.application.yml配置
@ConditionalOnProperty()注解中的 prefix 屬性就是此yml配的前綴 yml,name就是 teacher,而havingValue 則就是'小黑',如果application中有此配置,則加載相應(yīng)配置
class: teacher: 小黑
5.啟動類測試
@ConditionalOnProperty()配置文件中配置的指定參數(shù)值符合要求時,加載此配置
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
// @ConditionalOnProperty()配置文件中配置的指定參數(shù)值符合要求時,加載此配置
@SpringBootApplication
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent); //Student{name='小白', age=12}
}
}
六、@ConditionalOnExpression() 配置文件
@ConditionalOnExpression() 配置文件中配置的指定參數(shù)值與我給的值比較為true時,加載此配置
與@ConditionalOnProperty() 的區(qū)別在于@ConditionalOnExpression()注解使用的是SpringEL表達(dá)式與我給的值進(jìn)行匹配,為true時加載配置,而@ConditionalOnProperty() 注解使用的是通過注解中的屬性賦值作為參照物和yml里的配置進(jìn)行匹配是否為相同;
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3.定義@ConditionalOnExpression() 配置類
"'${class.teacher}'.equals('小黑')" :Spring EL表達(dá)式 ,配置文件class.teacher里對應(yīng)的值去比較我輸入的’小黑‘是否相同,true:加載此配置;
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CustomConditionOnExpression {
@Bean
//配置文件中配置的指定參數(shù)值與我要做比較的值為true時,加載此配置
@ConditionalOnExpression("'${class.teacher}'.equals('小黑')")
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.application.yml配置
@ConditionalOnExpression()注解 value屬性就是此配置的鍵 class.teacherg 而獲取到的值就是’小黑‘,然后進(jìn)行比較, true則加載相應(yīng)配置
class: teacher: 小黑
5.啟動類測試
@ConditionalOnExpression()//配置文件中配置的指定參數(shù)值與我傳的參數(shù)進(jìn)行比較,如果相同則為true,加載此配置,否則不加載
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
// @ConditionalOnExpression()//配置文件中配置的指定參數(shù)值與我傳的參數(shù)比較,相同為true時,加載此配置
@SpringBootApplication
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent);
}
}
七、@ConditionalOnResource() 指定的資源文件出現(xiàn)在classpath中生效
(就是編譯后target里classes里的路徑名是否存在)
指定文件路徑名存在時,對應(yīng)配置生效
1.首先引入pom依賴
<!--引入springboot父依賴-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--引入啟動器依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.實(shí)體類測試對象
根據(jù)Condition返回結(jié)果表示是否將此對象注入ioc中; true:表示注入ioc
//根據(jù)Condition返回結(jié)果表示是否注入ioc中true:表示注入ioc
public class Student {
String name="小白";
Integer age =12;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3.定義@ConditionalOnResource()配置類
resources = "com\it\mhh" :編譯后taget->classes里的路徑名是否存在,存在為true,加載配置
import com.it.mhh.entry.Student;
import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CustomConditionOnResource {
@Bean
//指定的資源文件出現(xiàn)在classpath中生效(就數(shù)編譯后target里classes里的包路徑)
@ConditionalOnResource(resources = "com\\it\\mhh")
//這里就是判斷是否吧此對象注入IOC,ClassCondition此類matches對象的返回的Boolean[true:創(chuàng)建,false:不創(chuàng)建]
public Student getStudent() {
return new Student();
}
}
4.啟動類測試
@ConditionalOnResource()//指定的資源文件出現(xiàn)在classpath中生效(就數(shù)編譯后target里classes里的包路徑)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
//@ConditionalOnResource()//指定的資源文件出現(xiàn)在classpath中生效(就數(shù)編譯后target里classes里的包路徑)
public class ConditionApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConditionApplication.class, args);
//Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'getStudent' available[表示沒有獲取到這個bean]
Object getStudent = run.getBean("getStudent");//這里因?yàn)槭亲⑷雐oc時 @Bean沒有指定名字,則就是方法名從ioc中獲取此對象
System.out.println(getStudent);
}
}到此這篇關(guān)于SpringBoot中的Condition包下常用條件依賴注解案例介紹的文章就介紹到這了,更多相關(guān)SpringBoot條件依賴注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)MySQL數(shù)據(jù)實(shí)時同步至Elasticsearch的方法詳解
MySQL擅長事務(wù)處理,而Elasticsearch(ES)則專注于搜索與分析,將MySQL數(shù)據(jù)實(shí)時同步到ES,可以充分發(fā)揮兩者的優(yōu)勢,下面我們就來看看如何使用Java實(shí)現(xiàn)這一功能吧2025-03-03
Spring Boot實(shí)現(xiàn)簡單的增刪改查
這篇文章主要介紹了Spring Boot如何實(shí)現(xiàn)簡單的增刪改查,幫助大家更好的理解和學(xué)習(xí)spring boot框架,感興趣的朋友可以了解下2020-09-09
IDEA2020.1啟動SpringBoot項(xiàng)目出現(xiàn)java程序包:xxx不存在
這篇文章主要介紹了IDEA2020.1啟動SpringBoot項(xiàng)目出現(xiàn)java程序包:xxx不存在,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
SpringBoot+devtools實(shí)現(xiàn)熱部署的示例代碼
在軟件項(xiàng)目的開發(fā)過程中,不可避免的會經(jīng)常修改代碼,每次修改代碼,都需要手動停止然后再啟動服務(wù),最后驗(yàn)證代碼的正確性,今天通過這篇文章,我們一起來學(xué)習(xí)一下如何使用Spring?Boot?+?devtools?輕松搞定熱部署,需要的朋友可以參考下2024-08-08
Java實(shí)現(xiàn)提取Word文檔表格數(shù)據(jù)
使用Java實(shí)現(xiàn)Word文檔表格數(shù)據(jù)的提取,可以確保數(shù)據(jù)處理的一致性和準(zhǔn)確性,同時大大減少所需的時間和成本,下面我們來看看具體實(shí)現(xiàn)方法吧2025-01-01
Spring-boot oauth2使用RestTemplate進(jìn)行后臺自動登錄的實(shí)現(xiàn)
這篇文章主要介紹了Spring-boot oauth2使用RestTemplate進(jìn)行后臺自動登錄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

