摘要:條件化使用的例子開發環境使用數據庫,線上環境使用數據庫數據庫配置文件說明可以用來條件化,使用注解即可配置也行激活機制有時,激活標記的沒有則激活標記的都沒有,則只激活沒有限定的激活方式有六種作為的初始化參數作為應用的上下文參數作為條目作為
@Profile 條件化 bean
datasource.url=jdbc:mysql://localhost:3306/spring_test?useUnicode=true&characterEncoding=utf-8 datasource.driverClassName=com.mysql.jdbc.Driver datasource.username=root datasource.password=123456 datasource.initialSize=5 datasource.maxActive=10 datasource.maxWait=6000 spring.profiles.active=prod spring.profiles.default=dev數據庫配置文件
@Configuration @PropertySource("classpath:application.properties") @EnableTransactionManagement public class DataTestConfig { @Value("${datasource.driverClassName}") private String driverClassName; @Value("${datasource.url}") private String url; @Value("${datasource.username}") private String username; @Value("${datasource.password}") private String password; @Value("${datasource.initialSize}") private int initialSize; @Value("${datasource.maxActive}") private int maxActive; @Value("${datasource.maxWait}") private int maxWait; @Bean @Profile("prod") public DruidDataSource dataSource() { DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driverClassName); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); ds.setInitialSize(initialSize); ds.setMaxActive(maxActive); ds.setMaxWait(maxWait); return ds; } @Bean @Profile("dev") public DataSource embeddedDataSource() { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2) .addScript("classpath:schema.sql") .addScript("classpath:test-data.sql") .build(); } @Bean public LocalSessionFactoryBean sessionFactory(DataSource dataSource){ LocalSessionFactoryBean sfb = new LocalSessionFactoryBean(); sfb.setDataSource(dataSource); sfb.setPackagesToScan(new String[] { "com.seal_de.domain" }); Properties props = new Properties(); props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); props.setProperty("hibernate.show_sql", "true"); sfb.setHibernateProperties(props); return sfb; } @Bean @Autowired public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) { HibernateTransactionManager transactionManager = new HibernateTransactionManager(); transactionManager.setSessionFactory(sessionFactory); return transactionManager; } }profile 說明
profile 可以用來條件化 bean,使用 @Profile 注解即可(xml 配置也行)
profile 激活機制:有 spring.profiles.active 時,激活 active 標記的;沒有則激活 spring.profiles.default 標記的;都沒有,則只激活沒有 profile 限定的
激活方式有六種:
作為 DispatcherServlet 的初始化參數;
作為 Web 應用的上下文參數;
作為 JNDI 條目;
作為環境變量;
作為 JVM 的系統屬性;
在集成測試類上,使用 @ActiveProfiles 注解設置
該例子說明當屬性文件包含 spring.profiles.active=prod 和spring.profiles.default=dev 時,使用的是 MySql 的數據源
當屬性文件只有 spring.profiles.default=dev 時,使用的是 H2 的數據源
@Condition 注解是更通用的條件化 bean 的注解文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67172.html
摘要:高級裝配條件化的自動裝配與歧義性的作用域表達式語言環境與可以為不同的環境提供不同的數據庫配置加密算法等注解可以在類級別和方法級別,沒有指定的始終都會被創建的方式配置不同環境所需要的數據庫配置會搭建一個嵌入式的數據庫模式定義在測試數據通過加 高級裝配 Spring profile 條件化的bean 自動裝配與歧義性 bean的作用域 Spring表達式語言 環境與profile p...
摘要:裝配提供了三種裝配機制在中進行顯示配置在中進行顯示配置隱式的發現機制和自動裝配機制。表示該類是一個組件,將自動創建該組件實例,表示注入組件實例,和功能類似,和功能類似,但和是規范中提供的注解。 基本原理 spring的基礎是IOC和DI,其實IOC和DI是對同一件事從不同的方面進行描述的,兩者在spring中是同一件事務。 IOC:控制反轉,在這里就是指創建bean的主動權發生了轉移,...
摘要:關于依賴注入注入的注解提供的注解不僅僅是對象,還有在構造器上,還能用在屬性的方法上。與之相反,的限定符能夠在所有可選的上進行縮小范圍的操作,最終能夠達到只有一個滿足所規定的限制條件。注解是使用限定符的主要方式。 本文首發于泊浮目的專欄:https://segmentfault.com/blog... Spring致力于提供一種方法管理你的業務對象。在大量Java EE的應用中,隨處可...
摘要:用法先創建個組件,,,分別在類上加上注解。發現有一個屬性源碼注釋這樣說的自動檢測使用組件。在的方法中,表示不匹配,代表匹配。這就說明使用注冊組件有種方式。 Spring注解應用篇--IOC容器Bean組件注冊 這是Spring注解專題系類文章,本系類文章適合Spring入門者或者原理入門者,小編會在本系類文章下進行企業級應用實戰講解以及spring源碼跟進。 環境準備 編譯器IDEA...
閱讀 2025·2023-04-25 14:50
閱讀 2907·2021-11-17 09:33
閱讀 2611·2019-08-30 13:07
閱讀 2838·2019-08-29 16:57
閱讀 908·2019-08-29 15:26
閱讀 3540·2019-08-29 13:08
閱讀 1990·2019-08-29 12:32
閱讀 3383·2019-08-26 13:57