如何从Spring在DataSource中设置角色

如何从Spring在DataSource中设置角色,spring,jdbc,datasource,Spring,Jdbc,Datasource,我必须使用默认角色,以便在定义并连接数据源后,该角色将允许我使用select语句。我知道这有点奇怪,但出于安全考虑,我不得不这么做。下面是我的Spring的applicationContext.xml中的代码: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassNa

我必须使用默认角色,以便在定义并连接数据源后,该角色将允许我使用select语句。我知道这有点奇怪,但出于安全考虑,我不得不这么做。下面是我的Spring的applicationContext.xml中的代码:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
    <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver" />
    <property name="url"
            value="jdbc:db2://host_name:Port/DB_NAME:INFORMIXSERVER=SERVER_NAME;DELIMIDENT=y;" />
    <property name="username" value="user" />
    <property name="password" value="password" />
    <property name="minIdle" value="2" />
</bean>
在执行sql命令之前,但不知道如何在此处设置它

请注意。

DBCP允许您传递SQL语句,以便在连接初始化期间执行。大概是这样的:

set role ROLE_ACCESS_SELECT;
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close">
    <property name = "connectionInitSqls">
        <list><value>set role ROLE_ACCESS_SELECT</value></list>
    </property>
    ...
</bean>

设置角色访问权限选择
...
DBCP允许您传递SQL语句,以便在连接初始化期间执行。大概是这样的:

set role ROLE_ACCESS_SELECT;
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close">
    <property name = "connectionInitSqls">
        <list><value>set role ROLE_ACCESS_SELECT</value></list>
    </property>
    ...
</bean>

设置角色访问权限选择
...

没关系,我已经解决了这个问题。感谢所有看过我文章的人,解决方案如下:

set role ROLE_ACCESS_SELECT;
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close">
    <property name = "connectionInitSqls">
        <list><value>set role ROLE_ACCESS_SELECT</value></list>
    </property>
    ...
</bean>
在minIdle属性之后添加此行:


设置角色\u网络\u操作员
并定义一个类,例如:

public class ExtendedBasicDataSource extends BasicDataSource {
    public void setInitSQLCommands(List<String> initSQLCommands) {
        this.initSQLCommands = initSQLCommands;
        setConnectionInitSqls(initSQLCommands);
    }

}
public类ExtendedBasicDataSource扩展了BasicDataSource{
public void setInitSQLCommands(列出initSQLCommands){
this.initSQLCommands=initSQLCommands;
setConnectionInitSqls(initSQLCommands);
}
}

在Spring的ApplicationContext.xml中定义数据源bean时,使用该bean而不是org.apache.commons.dbcp.BasicDataSource。

没关系,我已经解决了这个问题。感谢所有看过我文章的人,解决方案如下:

set role ROLE_ACCESS_SELECT;
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close">
    <property name = "connectionInitSqls">
        <list><value>set role ROLE_ACCESS_SELECT</value></list>
    </property>
    ...
</bean>
在minIdle属性之后添加此行:


设置角色\u网络\u操作员
并定义一个类,例如:

public class ExtendedBasicDataSource extends BasicDataSource {
    public void setInitSQLCommands(List<String> initSQLCommands) {
        this.initSQLCommands = initSQLCommands;
        setConnectionInitSqls(initSQLCommands);
    }

}
public类ExtendedBasicDataSource扩展了BasicDataSource{
public void setInitSQLCommands(列出initSQLCommands){
this.initSQLCommands=initSQLCommands;
setConnectionInitSqls(initSQLCommands);
}
}

在Spring的ApplicationContext.xml中定义数据源bean时,使用该bean而不是org.apache.commons.dbcp.BasicDataSource。axtavt的建议更好,因为它不需要任何额外的编码。。。我认为你应该把他的回答标记为答案…@Hanswestbeek:Enrique(自我)的答案基本上是axtavt所说的更好的版本(它有正确的synthax),它向你展示了如果你想要的话如何通过编程来设置它+1axtavt的建议更好,因为它不需要任何额外的编码。。。我认为你应该把他的回答标记为答案…@Hanswestbeek:Enrique(自我)的答案基本上是axtavt所说的更好的版本(它有正确的synthax),它向你展示了如果你想要的话如何通过编程来设置它+1.