স্প্রিং বুট 1.5.8.RELEASE সহ 2018-01-07 আপডেট করুন
বেশিরভাগ উত্তরগুলি কীভাবে সেগুলি ব্যবহার করবেন (কেবল ডেটাসোর্স হিসাবে এবং লেনদেন হিসাবে), কেবল তাদের কীভাবে কনফিগার করা যায় তা সরবরাহ করে না।
আপনি চলমান উদাহরণ এবং https://www.surasint.com/spring-boot-with-m Multiple-- ডেটাবেসস- উদাহরণ / মধ্যে কিছু ব্যাখ্যা দেখতে পারেন
আমি এখানে কিছু কোড অনুলিপি করেছি।
প্রথমে আপনাকে অ্যাপ্লিকেশন.প্রেটিটি সেট করতে হবে
#Database
database1.datasource.url=jdbc:mysql://localhost/testdb
database1.datasource.username=root
database1.datasource.password=root
database1.datasource.driver-class-name=com.mysql.jdbc.Driver
database2.datasource.url=jdbc:mysql://localhost/testdb2
database2.datasource.username=root
database2.datasource.password=root
database2.datasource.driver-class-name=com.mysql.jdbc.Driver
তারপরে তাদের এইভাবে সরবরাহকারী (@ বিয়ান) হিসাবে সংজ্ঞায়িত করুন:
@Bean(name = "datasource1")
@ConfigurationProperties("database1.datasource")
@Primary
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "datasource2")
@ConfigurationProperties("database2.datasource")
public DataSource dataSource2(){
return DataSourceBuilder.create().build();
}
নোট করুন যে আমার কাছে @ বিয়ান (নাম = "ডেটাসোর্স 1") এবং @ বিয়ান (নাম = "ডেটাসোর্স 2") রয়েছে, তখন আপনি যখন এটি ব্যবহার করতে পারেন যখন আমাদের @ কোয়ালিফায়ার ("ডেটাসোর্স 1") এবং @ কোয়ালিফায়ার ("ডেটাসোর্স 2"), উদাহরণ স্বরূপ
@Qualifier("datasource1")
@Autowired
private DataSource dataSource;
আপনি যদি লেনদেনের বিষয়ে চিন্তা করেন তবে আপনার উভয়ের জন্যই ডেটাসোর্স ট্রান্সজেকশন ম্যানেজারটি সংজ্ঞায়িত করতে হবে:
@Bean(name="tm1")
@Autowired
@Primary
DataSourceTransactionManager tm1(@Qualifier ("datasource1") DataSource datasource) {
DataSourceTransactionManager txm = new DataSourceTransactionManager(datasource);
return txm;
}
@Bean(name="tm2")
@Autowired
DataSourceTransactionManager tm2(@Qualifier ("datasource2") DataSource datasource) {
DataSourceTransactionManager txm = new DataSourceTransactionManager(datasource);
return txm;
}
তারপরে আপনি এটির মতো ব্যবহার করতে পারেন
@Transactional //this will use the first datasource because it is @primary
অথবা
@Transactional("tm2")
এটি যথেষ্ট হওয়া উচিত। উপরের লিঙ্কে উদাহরণ এবং বিশদটি দেখুন।