您的位置:首页 > 编程语言 > Java开发

Spring Boot 学习14--使用Druid(编程注入)

2017-04-27 17:40 507 查看
在上一节使用是配置文件的方式进行使用druid,这里在扩散下使用编程式进行使用Druid,在上一节我们新建了一个类:DruidConfiguration我在这个类进行编码:
 
Java代码  

1. package com.kfit.base.servlet;  
2.   
3. import java.sql.SQLException;  
4.   
5. import javax.sql.DataSource;  
6.   
7. import org.springframework.beans.factory.annotation.Value;  
8.   
9. import org.springframework.boot.context.embedded.FilterRegistrationBean;  
10.  
11.import org.springframework.boot.context.embedded.ServletRegistrationBean;  
12.  
13.import org.springframework.context.annotation.Bean;  
14.  
15.import org.springframework.context.annotation.Configuration;  
16.  
17.import com.alibaba.druid.pool.DruidDataSource;  
18.  
19.import com.alibaba.druid.support.http.StatViewServlet;  
20.  
21.import com.alibaba.druid.support.http.WebStatFilter;  
22.  
23.   
24.  
25./** 
26. 
27. * druid 配置.  
28. 
29. *  
30. 
31. * 这样的方式不需要添加注解:@ServletComponentScan 
32. 
33. * @author Administrator 
34. 
35. * 
36. 
37. */  
38.  
39.@Configuration  
40.  
41.public class DruidConfiguration {  
42.  
43.         
44.  
45.       /** 
46. 
47.        * 注册一个StatViewServlet 
48. 
49.        * @return 
50. 
51.        */  
52.  
53.       @Bean  
54.  
55.       public ServletRegistrationBean DruidStatViewServle2(){  
56.  
57.              //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.  
58.  
59.              ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid2/*");  
60.  
61.                
62.  
63.              //添加初始化参数:initParams  
64.  
65.                
66.  
67.              //白名单:  
68.  
69.              servletRegistrationBean.addInitParameter("allow","127.0.0.1");  
70.  
71.              //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.  
72.  
73.              servletRegistrationBean.addInitParameter("deny","192.168.1.73");  
74.  
75.              //登录查看信息的账号密码.  
76.  
77.              servletRegistrationBean.addInitParameter("loginUsername","admin2");  
78.  
79.              servletRegistrationBean.addInitParameter("loginPassword","123456");  
80.  
81.              //是否能够重置数据.  
82.  
83.              servletRegistrationBean.addInitParameter("resetEnable","false");  
84.  
85.              return servletRegistrationBean;  
86.  
87.       }  
88.  
89.         
90.  
91.       /**  
92.  
93.        * 注册一个:filterRegistrationBean  
94.  
95.        * @return  
96.  
97.        */  
98.  
99.       @Bean  
100.  
101.       public FilterRegistrationBean druidStatFilter2(){  
102.  
103.                
104.  
105.              FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());  
106.  
107.                
108.  
109.              //添加过滤规则.  
110.  
111.              filterRegistrationBean.addUrlPatterns("/*");  
112.  
113.                
114.  
115.              //添加不需要忽略的格式信息.  
116.  
117.              filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");  
118.  
119.              return filterRegistrationBean;  
120.  
121.       }  
122.  
123.         
124.  
125.       /**  
126.  
127.        * 注册dataSouce,这里作为一个例子,只注入了部分参数信息,其它的参数自行扩散思维。  
128.  
129.        * @param driver  
130.  
131.        * @param url  
132.  
133.        * @param username  
134.  
135.        * @param password  
136.  
137.        * @param maxActive  
138.  
139.        * @return  
140.  
141.        */  
142.  
143.       @Bean  
144.  
145.    public DataSource druidDataSource(@Value("${spring.datasource.driverClassName}") String driver,  
146.  
147.                                      @Value("${spring.datasource.url}") String url,  
148.  
149.                                      @Value("${spring.datasource.username}") String username,  
150.  
151.                                      @Value("${spring.datasource.password}") String password,  
152.  
153.                                      @Value("${spring.datasource.maxActive}") int maxActive  
154.  
155.                                                              ) {  
156.  
157.        DruidDataSource druidDataSource = new DruidDataSource();  
158.  
159.        druidDataSource.setDriverClassName(driver);  
160.  
161.        druidDataSource.setUrl(url);  
162.  
163.        druidDataSource.setUsername(username);  
164.  
165.        druidDataSource.setPassword(password);  
166.  
167.        druidDataSource.setMaxActive(maxActive);  
168.  
169.          
170.  
171.        System.out.println("DruidConfiguration.druidDataSource(),url="+url+",username="+username+",password="+password);  
172.  
173.        try {  
174.  
175.            druidDataSource.setFilters("stat, wall");  
176.  
177.        } catch (SQLException e) {  
178.  
179.            e.printStackTrace();  
180.  
181.        }  
182.  
183.        return druidDataSource;  
184.  
185.    }  
186.  
187.         
188.  
189.}  
190.  
191.   

 
 
 
这里的区别在于加入一个方法:druidDataSource进行数据源的注入(当然这么一选择上一章节在application.properties配置的方式是比较好,如果有特殊需求的话,也可以在这里进行注入)。
如果同时进行了编程式的注入和配置的注入,配置的就无效了。
-----------------------------------------------------------------
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: