怎样申请自己的网站,网站建设排名奇艺地域,网站开发 需求文档,好的网站建设企业PS 使用 Spring Boot 3.1.2 进行测试
1.使用ConditionalOnProperty
ConditionalOnProperty仅当特定属性存在或具有特定值时#xff0c;注释才会创建 Bean 。
在此示例中#xff0c;仅当或文件中的CommandLineRunner属性db.init.enabled设置为 true时#xff0c;才会执行。…PS 使用 Spring Boot 3.1.2 进行测试
1.使用ConditionalOnProperty
ConditionalOnProperty仅当特定属性存在或具有特定值时注释才会创建 Bean 。
在此示例中仅当或文件中的CommandLineRunner属性db.init.enabled设置为 true时才会执行。application.propertiesapplication.yml
数据库初始化器.java
package com.yuanmomo;import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;Component
ConditionalOnProperty(name db.init.enabled,havingValue true,matchIfMissing false
)
public class DatabaseInitializer implements CommandLineRunner {Overridepublic void run(String... args) {System.out.println(This runs when db.init.enabled property is true.);}}应用程序.属性
db.init.enabledtrue2. 使用环境
Environment我们可以使用bean 和语句以编程方式检查条件if。
在此示例中CommandLineRunner仅当属性db.init.enabled设置为 true 时才会执行。
数据库初始化器.java
package com.yuanmomo;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;Component
public class DatabaseInitializer implements CommandLineRunner {Autowiredprivate Environment env;Overridepublic void run(String... args) {if (true.equals(env.getProperty(db.init.enabled))) {System.out.println(This runs when db.init.enabled property is true.);}}
}3.使用 Spring Profiles
仅当特定的 Spring 配置文件处于活动状态时注释Profile才会创建 Bean。
在此示例中CommandLineRunner仅当 Spring 活动配置文件为 时 才会执行dev。
数据库初始化器.java
package com.yuanmomo;import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;Component
Profile(dev)
public class DatabaseInitializer implements CommandLineRunner {Overridepublic void run(String... args) {System.out.println(This runs when profile is to dev.);}
}设置Spring 活动配置文件的不同方法。
应用程序.属性
spring.profiles.activedevSpring Boot Maven 插件
终端
./mvnw spring-boot:run -Dspring-boot.run.profilesdevjava -jar
终端
java -jar -Dspring.profiles.activedev target/spring-boot-commandlinerunner-1.0.jar4.检查其他bean是否存在
仅当应用程序上下文中存在或缺少特定 bean 时ConditionalOnBean和ConditionalOnMissingBean注释才会创建 bean。
4.1 使用ConditionalOnBean
ConditionalOnBean如果应用程序上下文中存在特定 bean则注释会创建该 bean 。
在这个例子中CommandLineRunner只有当BookControllerbean 存在于应用程序上下文中时才会执行。
数据库初始化器.java
package com.mkyong;import com.mkyong.book.BookController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.stereotype.Component;Component
ConditionalOnBean(BookController.class)
public class DatabaseInitializer implements CommandLineRunner {Overridepublic void run(String... args) {//...}
}4.2 使用ConditionalOnMissingBean
ConditionalOnMissingBean如果应用程序上下文中不存在特定 bean则注释将创建该 bean 。
在这个例子中CommandLineRunner只有当BookControllerbean 不存在于应用程序上下文中时才会执行。
数据库初始化器.java
package com.yuanmomo;import com.mkyong.book.BookController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.stereotype.Component;Component
ConditionalOnMissingBean(BookController.class)
public class DatabaseInitializer implements CommandLineRunner {Overridepublic void run(String... args) {//...}
}