Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于连接可用性的spring连接到数据库_Spring_Jdbc - Fatal编程技术网

基于连接可用性的spring连接到数据库

基于连接可用性的spring连接到数据库,spring,jdbc,Spring,Jdbc,在一个应用程序中,我们有三个数据库服务器 1.db1 2.db2 3.db3 我们已经为上述连接配置了jndi 如果db1中没有连接,那么从db2应用程序将建立连接,如果db2中没有连接,那么应用程序将在db2中建立连接。服务器的详细信息 tomcat 8.0服务器、spring 4.0、oracle这是您的问题的一个示例,您可以参考此源代码 应用程序属性 spring.ds_items.driverClassName=org.postgresql.Driver spring.ds_items

在一个应用程序中,我们有三个数据库服务器
1.db1 2.db2 3.db3 我们已经为上述连接配置了jndi 如果db1中没有连接,那么从db2应用程序将建立连接,如果db2中没有连接,那么应用程序将在db2中建立连接。服务器的详细信息
tomcat 8.0服务器、spring 4.0、oracle

这是您的问题的一个示例,您可以参考此源代码

应用程序属性

spring.ds_items.driverClassName=org.postgresql.Driver 
spring.ds_items.url=jdbc:postgresql://srv0/test 
spring.ds_items.username=test0 
spring.ds_items.password=test0 


spring.ds_users.driverClassName=org.postgresql.Driver 
spring.ds_users.url=jdbc:postgresql://srv1/test 
spring.ds_users.username=test1 
spring.ds_users.password=test1 
DatabaseItemsConfig.java

import javax.sql.DataSource; 

@Configuration 
@ConfigurationProperties(name = "spring.ds_items") 
public class DatabaseItemsConfig extends TomcatDataSourceConfiguration { 

    @Bean(name = "dsItems") 
    public DataSource dataSource() { 
        return super.dataSource(); 
    } 

    @Bean(name = "jdbcItems") 
    public JdbcTemplate jdbcTemplate(DataSource dsItems) { 
        return new JdbcTemplate(dsItems); 
    } 
} 
import javax.sql.DataSource; 

@Configuration 
@ConfigurationProperties(name = "spring.ds_users") 
public class DatabaseUsersConfig extends TomcatDataSourceConfiguration { 

    @Bean(name = "dsUsers") 
    public DataSource dataSource() { 
        return super.dataSource(); 
    } 

    @Bean(name = "jdbcUsers") 
    public JdbcTemplate jdbcTemplate(DataSource dsUsers) { 
        return new JdbcTemplate(dsUsers); 
    } 

} 
DatabaseUsersConfig.java

import javax.sql.DataSource; 

@Configuration 
@ConfigurationProperties(name = "spring.ds_items") 
public class DatabaseItemsConfig extends TomcatDataSourceConfiguration { 

    @Bean(name = "dsItems") 
    public DataSource dataSource() { 
        return super.dataSource(); 
    } 

    @Bean(name = "jdbcItems") 
    public JdbcTemplate jdbcTemplate(DataSource dsItems) { 
        return new JdbcTemplate(dsItems); 
    } 
} 
import javax.sql.DataSource; 

@Configuration 
@ConfigurationProperties(name = "spring.ds_users") 
public class DatabaseUsersConfig extends TomcatDataSourceConfiguration { 

    @Bean(name = "dsUsers") 
    public DataSource dataSource() { 
        return super.dataSource(); 
    } 

    @Bean(name = "jdbcUsers") 
    public JdbcTemplate jdbcTemplate(DataSource dsUsers) { 
        return new JdbcTemplate(dsUsers); 
    } 

} 
ItemRepository.java

import java.sql.ResultSet; 
import java.sql.SQLException; 

@Repository 
public class ItemRepository { 
    protected final Logger log = LoggerFactory.getLogger(getClass()); 

    @Autowired 
    @Qualifier("jdbcItems") 
    protected JdbcTemplate jdbc; 

    public Item getItem(long id) { 
        return jdbc.queryForObject("SELECT * FROM sb_item WHERE id=?", itemMapper, id); 
    } 

    private static final RowMapper<Item> itemMapper = new RowMapper<Item>() {
        public Item mapRow(ResultSet rs, int rowNum) throws SQLException { 
            Item item = new Item(rs.getLong("id"), rs.getString("title")); 
            item.price = rs.getDouble("id"); 
            return item; 
        } 
    }; 
} 
   import java.sql.ResultSet; 
import java.sql.SQLException; 

@Repository 
public class UserRepository { 
    protected final Logger log = LoggerFactory.getLogger(getClass()); 

    @Autowired 
    @Qualifier("jdbcUsers") 
    protected JdbcTemplate jdbc; 

    public User getUser(long id) { 
        return jdbc.queryForObject("SELECT * FROM sb_user WHERE id=?", userMapper, id); 
    } 

    private static final RowMapper<User> userMapper = new RowMapper<User>() {
        public User mapRow(ResultSet rs, int rowNum) throws SQLException { 
            User user = new User(rs.getLong("id"), rs.getString("name")); 
            user.alias = rs.getString("alias"); 
            return user; 
        } 
    }; 
} 
导入java.sql.ResultSet;
导入java.sql.SQLException;
@存储库
公共类ItemRepository{
受保护的最终记录器日志=LoggerFactory.getLogger(getClass());
@自动连线
@限定符(“jdbcItems”)
受保护的jdbc模板jdbc;
公共项getItem(长id){
返回jdbc.queryForObject(“从sb_项中选择*,其中id=?”,itemMapper,id);
} 
私有静态最终行映射器itemMapper=新行映射器(){
公共项mapRow(ResultSet rs,int rowNum)抛出SQLException{
项目=新项目(rs.getLong(“id”)、rs.getString(“title”);
item.price=rs.getDouble(“id”);
退货项目;
} 
}; 
} 
UserRepository.java

import java.sql.ResultSet; 
import java.sql.SQLException; 

@Repository 
public class ItemRepository { 
    protected final Logger log = LoggerFactory.getLogger(getClass()); 

    @Autowired 
    @Qualifier("jdbcItems") 
    protected JdbcTemplate jdbc; 

    public Item getItem(long id) { 
        return jdbc.queryForObject("SELECT * FROM sb_item WHERE id=?", itemMapper, id); 
    } 

    private static final RowMapper<Item> itemMapper = new RowMapper<Item>() {
        public Item mapRow(ResultSet rs, int rowNum) throws SQLException { 
            Item item = new Item(rs.getLong("id"), rs.getString("title")); 
            item.price = rs.getDouble("id"); 
            return item; 
        } 
    }; 
} 
   import java.sql.ResultSet; 
import java.sql.SQLException; 

@Repository 
public class UserRepository { 
    protected final Logger log = LoggerFactory.getLogger(getClass()); 

    @Autowired 
    @Qualifier("jdbcUsers") 
    protected JdbcTemplate jdbc; 

    public User getUser(long id) { 
        return jdbc.queryForObject("SELECT * FROM sb_user WHERE id=?", userMapper, id); 
    } 

    private static final RowMapper<User> userMapper = new RowMapper<User>() {
        public User mapRow(ResultSet rs, int rowNum) throws SQLException { 
            User user = new User(rs.getLong("id"), rs.getString("name")); 
            user.alias = rs.getString("alias"); 
            return user; 
        } 
    }; 
} 
导入java.sql.ResultSet;
导入java.sql.SQLException;
@存储库
公共类用户存储库{
受保护的最终记录器日志=LoggerFactory.getLogger(getClass());
@自动连线
@限定符(“jdbcUsers”)
受保护的jdbc模板jdbc;
公共用户getUser(长id){
返回jdbc.queryForObject(“从sb_用户中选择*id=?”,userMapper,id);
} 
私有静态最终行映射器userMapper=新行映射器(){
公共用户mapRow(ResultSet rs,int rowNum)抛出SQLException{
User User=新用户(rs.getLong(“id”)、rs.getString(“name”);
user.alias=rs.getString(“别名”);
返回用户;
} 
}; 
} 

谢谢。如何在dao layerI中使用它我是这样使用它的你可以参考编辑后的文章。谢谢。如何在dao层中使用它,即基于连接的可用性。我需要调用适当的jdbctemplate