如何部署同一个Spring boot web 应用到不同的环境
admin
2023-06-04 17:41:46
0

在现实项目当中我们往往都有不同的部署环境,例如:dev数据库, system test 数据库 和production 数据库, 那么如何把同一个spring boot web app 部署到不同的数据库环境呢?


spring boot 提供一个profile的功能, 通过配置多个profile文件,实现同一应用切换到不同的部署环境当中。这里不在详细介绍profile的概念。有兴趣自行到官网查询。这里通过代码来说明如何配置spring boot 来实现spring JDBC tempalte切换不同的jdbc数据源


1 在pom.xml引入必须的依赖

 
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            org.springframework
            spring-jdbc
         
        
     	
   			 com.oracle
   			 ojdbc6
        11.2.0.3

注:这里我使用的是oracle jdbc。


2 创建不同的spring boot 配置文件,这三个文件分表代表dev,system,production

application.properties
application-sys.properties
application-prod.properties

注意 application-{profile} 对应不同的环境。 可以通过java -jar -Dspring.profile.active=sys 来切换不同的配置文件


3 配置不同的jdbc 信息到相应的配置文件当中

在application.properties 文件中
spring.datasource.url=jdbc:oracle:thin:@dev01.example.com:1521:lausoned
spring.datasource.username=devUser
spring.datasource.password=XXXXX
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

在application-sys.properties
spring.datasource.url=jdbc:oracle:thin:@sys01.example.com:1521:lausoned
spring.datasource.username=sysUser
spring.datasource.password=XXXXX
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

在application-prod.properties
spring.datasource.url=jdbc:oracle:thin:@prodv01.example.com:1521:lausoned
spring.datasource.username=prodUser
spring.datasource.password=XXXXX
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver


4 配置spring boot 

@Configuration
public class DataBaseConfig {

	
	@Bean(name="asuDBsource")
	@ConfigurationProperties(prefix="spring.datasource")
	public DataSource primaryDataSource() {
	    return DataSourceBuilder.create().build();
	}


	
	 @Bean(name = "asuJDBC")
	 @Autowired
	  public JdbcTemplate blcJdbcTemplate(@Qualifier("asuDBsource") DataSource source) {
	        return new JdbcTemplate(source);
	    }

}

这里我创建了一个DataBaseConfig.java 的文件来配置jdbc 连接到数据库并且返回数据源, 并且配置这个数据源来返回jdbcTemplate。 我这里使用的是传统jdbc 连接数据库并没有使用hibernate. 


5 通过依赖注入(DI) 来调用JDBCTemplate. 

@Repository
public class AsuDaoImpl implements IAsuDao {
	@Autowired
	@Qualifier(value="asuJDBC")
	private JdbcTemplate jdbcTemplate;

}	

这里我创建一个dao interface, 和dao Impl来注入这个jdbcTemplate. 

相关内容

热门资讯

历史性一天,给美国的一个强烈信... 对中东来说,这是历史性的一天。沙特王储萨勒曼、土耳其总统埃尔多安、巴基斯坦总理夏巴兹,8月7日在沙特...
美参议院法案拟对中印加税100... 据美国消费者新闻与商业频道(CNBC)8月7日报道,美国参议院周五以压倒性优势通过了一项对俄罗斯制裁...
华为×Les Néréides... IT之家 8 月 7 日消息,华为终端 BG CEO 何刚今日宣布,FreeClip 2 耳夹耳机配...
2026年正规的手机取卡针品控... 现在手机数码行业更新迭代速度越来越快,终端品牌对供应链配套的要求也越来越高,一个小小的手机取卡针,虽...
预计“白海豚”明晚将在浙江舟山... 今天6时中央气象台发布台风橙色预警和强对流天气蓝色预警。台风橙色预警今年第13号台风“白海豚”(强台...
谷歌AI业务重组幕后:商业化压... 财联社8月7日讯(编辑 史正丞)本周早些时候, 美国互联网巨头谷歌宣布对旗下AI业务展开全面洗牌。D...
喜报!古田一小斩获全国青少年无... 近日,第十届全国青少年无人机大赛总决赛在天津收官。古田县第一小学慈育雏鹰基地无人机社团6名学子,在基...
加媒:加拿大正与美国商讨,以贸... 据加拿大《环球邮报》8月7日消息,知情人士称,加拿大和美国正在讨论一项潜在协议。根据该协议,渥太华将...
德意电器油烟机怎么样,口碑好吗 最佳回答 你好,得意的抽油烟机虽然不怎么做广告,但是人家很牛啊,不做广告,我的价格依然很高,关键是,...
跑步机什么牌子好 最佳回答 跑步机舒华的牌子最好。舒华在跑步机十大排行榜中位列第一。质量是通过欧盟标准的EN957等质...