在jfinal中使用druid,并配置查看权限

首先导入druid包,然后配置configPlugin

 1 @Override
 2     public void configPlugin(Plugins me) {
 3         /**配置druid数据连接池插件**/
 4         DruidPlugin dp=new DruidPlugin(getProperty("jdbcUrl"),getProperty("user"),getProperty("password").trim());
 5         /**配置druid监控**/
 6         dp.addFilter(new StatFilter());
 7         WallFilter wall=new WallFilter();
 8         wall.setDbType("mysql");
 9         dp.addFilter(wall);
10         me.add(dp);
11         
12         ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
13         me.add(arp);
14         arp.setShowSql(true);
15         arp.addMapping("user", User.class);
16     }

其次,配置handle

 1 @Override
 2     public void configHandler(Handlers me) {
 3         DruidStatViewHandler dvh=new DruidStatViewHandler("/druid",new IDruidStatViewAuth(){
 4             public boolean isPermitted(HttpServletRequest request) {
 5                 // 这里只是简单的判断访问者是否登录,还可以做更加细致的权限控制
 6                 User user=(User) request.getSession().getAttribute("user");
 7                 if(user==null){
 8                     return false;
 9                 }
10                 return "admin".equals(user.getStr("uname"));
11             }
12         });
13         me.add(dvh);
14     }

这样,只要输入  localhost/druid就可以了。这里设置只有admin登陆之后可以查看。

### 阿里巴巴 Druid 连接池动态配置 在现代应用程序开发中,特别是在微服务架构下,静态配置可能无法满足所有场景的需求。因此,支持运行时的动态配置变得尤为重要。对于阿里巴巴的 `Druid` 数据库连接池而言,实现动态配置可以通过多种方式进行。 #### 方法一:通过环境变量或外部化配置文件更新 当使用 Spring Boot 应用程序时,可以利用其内置的支持来加载不同的属性源。这意味着可以在不重启应用的情况下改变某些参数设置。例如,在 application.properties 或者 application.yml 文件中的配置项能够被命令行参数、环境变量或者其他形式覆盖[^4]。 ```yaml spring: datasource: druid: url: ${DB_URL:jdbc:mysql://localhost:3306/mydb} username: ${DB_USERNAME:root} password: ${DB_PASSWORD:root} driver-class-name: com.mysql.cj.jdbc.Driver ``` 上述 YAML 片段展示了如何定义默认值以及允许这些值由环境变量替代的方法。 #### 方法二:基于管理端点调整 如果希望更进一步控制连接池的行为而不仅仅是更改基本连接字符串,则可考虑启用 Druid 提供的数据源监控功能,结合 Spring Actuator 的 HTTP API 来实现实时修改配置的目的。这通常涉及到暴露 `/actuator/datasource` 路径下的接口用于获取当前状态和提交新的配置选项[^2]。 需要注意的是,这种方法的安全性和权限控制非常重要,应该仅限于受信任的操作员访问。 #### 方法三:编程式变更 除了依赖框架特性外,还可以直接编写 Java 代码来进行更加灵活的变化处理。下面是一个简单的例子说明怎样手动创建一个新的数据源实例替换旧有的: ```java import com.alibaba.druid.pool.DruidDataSource; // ... @Autowired private DataSource dataSource; @Bean(destroyMethod = "close", initMethod="init") public DataSource dynamicDataSource() { final Properties properties = new Properties(); // 获取最新的数据库配置信息, 可能来自远程API或其他地方 String dbUrl = getLatestDbConfig().getUrl(); String user = getLatestDbConfig().getUser(); String pass = getLatestDbConfig().getPassword(); DruidDataSource ds = (DruidDataSource)dataSource; ds.setUrl(dbUrl); ds.setUsername(user); ds.setPassword(pass); return ds; } private DbConfig getLatestDbConfig(){ // 实现逻辑以获得最新配置... return null; } ``` 这段代码片段展示了一个假设性的函数 `dynamicDataSource()` ,它会根据某种机制(如调用 Web Service)取得最新的数据库连接详情,据此更新现有的 `DruidDataSource` 对象[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值