SpringBoot 连接mongoDB,因为需要通过MongoTemplate 连接,需要将springboot中的mongoAutoConfiguration注掉,但是因为要连接集群,需要通过springboot.data.mongodb.uri=集群的地址 ,这个时候,需要将springboot的MongoAutoConfiguration放开,将MongoConfig的相关配置删除即可
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, SpringDataWebAutoConfiguration.class}) @ImportResource({"classpath:applicationContext.xml"}) /*@MapperScan("cn.dfcx.ochserv.**.**.dao")*/ @EnableDubbo public class LogServiceApplication { /** * The entry point of application. * * @param args the input arguments */ public static void main(String[] args) { SpringApplication.run(LogServiceApplication.class, args); } }
@Configuration public class MongoConfig { private final Environment env; @Autowired MongoConfig(final Environment env) { this.env = env; } @Bean public MongoTemplate mongoTemplate() { MongoClientFactoryBean clientFactoryBean = new MongoClientFactoryBean(); MongoCredential credential = MongoCredential.createScramSha1Credential( env.getProperty("spring.data.mongodb.username"), env.getProperty("spring.data.mongodb.database"), env.getProperty("spring.data.mongodb.password").toCharArray()); clientFactoryBean.setCredentials(new MongoCredential[]{credential}); List<String> urls = Splitter.on(",").trimResults().splitToList(env.getProperty("spring.data.mongodb.uri")); ServerAddress[] sds = new ServerAddress[urls.size()]; for (int i = 0; i < sds.length; i++) { List<String> adds = Splitter.on(":").trimResults().splitToList(urls.get(i)); InetSocketAddress address = new InetSocketAddress(adds.get(0), Integer.parseInt(adds.get(1))); sds[i] = new ServerAddress(address); } clientFactoryBean.setReplicaSetSeeds(sds); MongoTemplate mongoTemplate = null; try { clientFactoryBean.afterPropertiesSet(); MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(clientFactoryBean.getObject(), env.getProperty("spring.data.mongodb.database")); DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory); MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, new MongoMappingContext()); mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null)); mongoTemplate = new MongoTemplate(mongoDbFactory, mappingConverter); // mongoTemplate = new MongoTemplate(clientFactoryBean.getObject(), env.getProperty("spring.data.mongodb.database")); } catch (Exception e) { e.printStackTrace(); } return mongoTemplate; } }