From 0a28a61b42bc42ee2de541b641d8757c1604a804 Mon Sep 17 00:00:00 2001
From: lsy <18332763730@163.com>
Date: Sat, 9 Sep 2017 12:54:04 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9common=E4=B8=BA=E7=83=AD?=
=?UTF-8?q?=E6=8F=92=E6=8B=94=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE=E7=9A=84?=
=?UTF-8?q?ssm=E6=A1=86=E6=9E=B6=E5=9F=BA=E7=A1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/pom.xml | 109 +++++++--------
.../micro/fast/common/CommonApplication.java | 21 +--
.../fast/common/config/DataSourceConfig.java | 132 ++++++++++++++++++
.../common/config/JdbcConnectionConfig.java | 64 +++++++++
.../config/SqlSessionFactoryConfig.java | 77 ++++++++++
.../com/micro/fast/common/util/AESUtil.java | 12 --
.../fast/common/util/WatermarkerUtil.java | 24 ++--
.../main/resources/META-INF/spring.factories | 2 +
.../fast/common/CommonApplicationTests.java | 16 ---
.../micro/fast/common/util/AESUtilTest.java | 25 ++++
.../fast/common/util/WatermarkerUtilTest.java | 2 +-
pom.xml | 2 +-
upms/pom.xml | 5 +
13 files changed, 382 insertions(+), 109 deletions(-)
create mode 100644 common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java
create mode 100644 common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java
create mode 100644 common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java
create mode 100644 common/src/main/resources/META-INF/spring.factories
delete mode 100644 common/src/test/java/com/micro/fast/common/CommonApplicationTests.java
create mode 100644 common/src/test/java/com/micro/fast/common/util/AESUtilTest.java
diff --git a/common/pom.xml b/common/pom.xml
index a639e06..e9543c1 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -26,68 +26,9 @@
1.8
1.8
1.8
- 3.4.1
- 1.3.0
-
-
-
- org.springframework.cloud
- spring-cloud-starter-bus-amqp
-
-
-
- org.springframework.cloud
- spring-cloud-starter-config
-
-
-
- org.springframework.cloud
- spring-cloud-starter-eureka
-
-
-
- org.springframework.cloud
- spring-cloud-starter-feign
-
-
- org.springframework.cloud
- spring-cloud-starter-ribbon
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.cloud
- spring-cloud-starter-hystrix
-
-
-
- org.springframework.cloud
- spring-cloud-starter-sleuth
-
-
- org.springframework.cloud
- spring-cloud-starter-zipkin
-
-
- io.zipkin.java
- zipkin-autoconfigure-ui
- runtime
-
-
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
- org.springframework.session
- spring-session-data-redis
-
org.springframework.boot
@@ -147,10 +88,57 @@
tomcat-embed-el
+
+
+ com.google.guava
+ guava
+ 20.0
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.5
+
+
+
+
+ commons-collections
+ commons-collections
+ 3.2.1
+
+
+
+ joda-time
+ joda-time
+ 2.3
+
+
+
+
+ org.hashids
+ hashids
+ 1.0.1
+
+
+
+
+ commons-net
+ commons-net
+ 3.1
+
+
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.2.2
+
commons-io
commons-io
- 2.4
+ 2.0.1
@@ -175,6 +163,7 @@
spring-boot-starter-test
test
+
diff --git a/common/src/main/java/com/micro/fast/common/CommonApplication.java b/common/src/main/java/com/micro/fast/common/CommonApplication.java
index cbdd424..3e3ed59 100644
--- a/common/src/main/java/com/micro/fast/common/CommonApplication.java
+++ b/common/src/main/java/com/micro/fast/common/CommonApplication.java
@@ -1,14 +1,19 @@
package com.micro.fast.common;
-import org.springframework.boot.SpringApplication;
-import org.springframework.cloud.client.SpringCloudApplication;
-import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
-@SpringCloudApplication
-@EnableFeignClients
+/**
+ * 配置类,该类将配置与META-INF/spring.factories文件中用于被EnableAutoConfiguration注解所识别实现自动配置
+ * create by lishouyu 2017/09/09
+ * email 18332763730@163.com
+ *
+ * last edit lishouyu 2017/09/09
+ * email 18332763730@163.com
+ *
+ */
+@Configuration
+@ComponentScan(basePackages = {"com.micro.fast.common.config"})
public class CommonApplication {
- public static void main(String[] args) {
- SpringApplication.run(CommonApplication.class, args);
- }
}
diff --git a/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java b/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java
new file mode 100644
index 0000000..29a8649
--- /dev/null
+++ b/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java
@@ -0,0 +1,132 @@
+package com.micro.fast.common.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.support.http.StatViewServlet;
+import com.alibaba.druid.support.http.WebStatFilter;
+import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 替换默认的数据源,使用自定义的druid数据源
+ * create by lishouyu 2017/09/09
+ * email 18332763730@163.com
+ *
+ * last edit lishouyu 2017/09/09
+ * email 18332763730@163.com
+ *
+ */
+@Configuration
+public class DataSourceConfig {
+ private static final Logger logger = LoggerFactory.getLogger(DataSourceConfig.class);
+
+ @Autowired
+ private JdbcConnectionConfig jdbcConnectionConfig;
+
+ /**
+ * druid的servlet的配置
+ * @return
+ */
+ @Bean
+ public ServletRegistrationBean servletRegistrationBean(){
+ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
+ //注册servlet
+ servletRegistrationBean.setServlet(new StatViewServlet());
+
+ //设置servlet初始化的参数
+ Map initParams = new HashMap<>();
+ //设置登录密码
+ initParams.put("loginUsername","root");
+ initParams.put("loginPassword","studyj2e");
+ //设置能否重置
+ initParams.put("resetEnable","false");
+ //deny优先于allow
+ initParams.put("allow","127.0.0.1");
+ initParams.put("deny","213.122.232.233");
+ servletRegistrationBean.setInitParameters(initParams);
+
+ //设置servlet的地址
+ servletRegistrationBean.addUrlMappings("/druid/*");
+ return servletRegistrationBean;
+ }
+
+ /**
+ * druid过滤器的配置
+ * @return
+ */
+ @Bean
+ public FilterRegistrationBean filterRegistrationBean() {
+ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
+ filterRegistrationBean.setFilter(new WebStatFilter());
+ Map initParams = new HashMap<>();
+ //设置忽略请求
+ initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/static/*,/druid/*");
+ filterRegistrationBean.setInitParameters(initParams);
+ filterRegistrationBean.addUrlPatterns("/*");
+ return filterRegistrationBean;
+ }
+
+ /**
+ * 根据BeanId来拦截配置 用来bean的监控
+ * @return
+ */
+ @Bean(value = "druid-stat-interceptor")
+ public DruidStatInterceptor druidStatInterceptor(){
+ DruidStatInterceptor druidStatInterceptor = new DruidStatInterceptor();
+ return druidStatInterceptor;
+ }
+
+ /**
+ * 设置要拦截统计的bean
+ * @return
+ */
+ @Bean
+ public BeanNameAutoProxyCreator beanNameAutoProxyCreator(){
+ BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator();
+ beanNameAutoProxyCreator.setProxyTargetClass(true);
+ //设置要监控的bean的id
+ beanNameAutoProxyCreator.setBeanNames("userController");
+ //要使用的拦截器
+ beanNameAutoProxyCreator.setInterceptorNames("druid-stat-interceptor");
+ return beanNameAutoProxyCreator;
+ }
+
+ @Bean(name = "dataSource")
+ @Primary
+ public DataSource druidDataSource(){
+ DruidDataSource druidDataSource = new DruidDataSource();
+ //数据库连接的相关配置
+ druidDataSource.setUsername(jdbcConnectionConfig.getUsername());
+ druidDataSource.setPassword(jdbcConnectionConfig.getPassword());
+ druidDataSource.setUrl(jdbcConnectionConfig.getUrl());
+ druidDataSource.setDriverClassName(jdbcConnectionConfig.getDriverClass());
+ //连接池的具体配置
+ druidDataSource.setDefaultAutoCommit(true);
+ druidDataSource.setInitialSize(20);
+ druidDataSource.setMaxActive(50);
+ druidDataSource.setMinIdle(10);
+ druidDataSource.setMaxWait(10);
+ druidDataSource.setMinEvictableIdleTimeMillis(3600000);
+ try {
+ druidDataSource.setFilters("stat,wall");
+ } catch (SQLException e) {
+ if(logger.isErrorEnabled()){
+ logger.error("设置过滤器失败",e);
+ }
+ }
+ return druidDataSource;
+ }
+
+}
diff --git a/common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java b/common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java
new file mode 100644
index 0000000..671d0f7
--- /dev/null
+++ b/common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java
@@ -0,0 +1,64 @@
+package com.micro.fast.common.config;
+
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 对jdbc连接参数进行从配置文件中读取,校验不能为空
+ * create by lishouyu 2017/09/09
+ * email 18332763730@163.com
+ *
+ * last edit lishouyu 2017/09/09
+ * email 18332763730@163.com
+ *
+ */
+@Configuration
+@AutoConfigureBefore(com.micro.fast.common.config.DataSourceConfig.class)
+@ConfigurationProperties(prefix = "jdbc")
+@Validated
+public class JdbcConnectionConfig {
+ @NotNull
+ private String username;
+ @NotNull
+ private String password;
+ @NotNull
+ private String url;
+ @NotNull
+ private String driverClass;
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getDriverClass() {
+ return driverClass;
+ }
+
+ public void setDriverClass(String driverClass) {
+ this.driverClass = driverClass;
+ }
+}
diff --git a/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java b/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java
new file mode 100644
index 0000000..909ff6a
--- /dev/null
+++ b/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java
@@ -0,0 +1,77 @@
+package com.micro.fast.common.config;
+
+import com.github.pagehelper.PageHelper;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.transaction.annotation.TransactionManagementConfigurer;
+
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.util.Properties;
+
+@Configuration
+@EnableTransactionManagement
+public class SqlSessionFactoryConfig implements TransactionManagementConfigurer{
+ @Autowired
+ private DataSource dataSource;
+
+ @Bean(name = "sqlSessionFactory")
+ @Primary
+ public SqlSessionFactory sqlSessionFactory(){
+ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+ //注入数据源
+ sqlSessionFactoryBean.setDataSource(dataSource);
+ //设置实体类所在的位置
+ sqlSessionFactoryBean.setTypeAliasesPackage("com.kklt.pojo");
+ //设置mapper映射文件的位置
+ ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
+ try {
+ sqlSessionFactoryBean.setMapperLocations(
+ resolver.getResources("classpath:/mappers/*.xml"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ //设置分页插件
+ PageHelper pageHelper = new PageHelper();
+ Properties properties = new Properties();
+ properties.setProperty("dialect","mysql");
+ pageHelper.setProperties(properties);
+ sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper});
+ //设置详细的配置
+ org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+ configuration.setMapUnderscoreToCamelCase(true);
+ configuration.setUseColumnLabel(true);
+ configuration.setUseGeneratedKeys(true);
+ //将详细配置放入到sqlSessionFactoryBean中
+ sqlSessionFactoryBean.setConfiguration(configuration);
+ SqlSessionFactory sqlSessionFactory = null;
+ try {
+ sqlSessionFactory = sqlSessionFactoryBean.getObject();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return sqlSessionFactory;
+ }
+
+
+
+ /**
+ * 向事务管理器中注入数据源,由spring来进行事务管理
+ */
+ @Override
+ @Bean("transactionManager")
+ @Primary
+ public PlatformTransactionManager annotationDrivenTransactionManager() {
+ return new DataSourceTransactionManager(dataSource);
+ }
+}
diff --git a/common/src/main/java/com/micro/fast/common/util/AESUtil.java b/common/src/main/java/com/micro/fast/common/util/AESUtil.java
index 7392fa7..84569b3 100644
--- a/common/src/main/java/com/micro/fast/common/util/AESUtil.java
+++ b/common/src/main/java/com/micro/fast/common/util/AESUtil.java
@@ -19,7 +19,6 @@ import java.security.SecureRandom;
*
* last edit lishouyu 2017/08/21
* email 18332763730@163.com
- *
*/
public class AESUtil {
//编码规则
@@ -135,15 +134,4 @@ public class AESUtil {
return null;
}
- public static void main(String[] args) {
- String[] keys = new String[]{"studyj2e"};
- System.out.println("key | AESEncode | AESDecode");
- for (String key : keys) {
- System.out.print(key+" | ");
- String aesEncode = AESEncode(key);
- System.out.print(aesEncode+" | ");
- String aesDecode = AESDecode(aesEncode);
- System.out.println(aesDecode);
- }
- }
}
diff --git a/common/src/main/java/com/micro/fast/common/util/WatermarkerUtil.java b/common/src/main/java/com/micro/fast/common/util/WatermarkerUtil.java
index 96cf96a..0323e25 100644
--- a/common/src/main/java/com/micro/fast/common/util/WatermarkerUtil.java
+++ b/common/src/main/java/com/micro/fast/common/util/WatermarkerUtil.java
@@ -1,7 +1,7 @@
package com.micro.fast.common.util;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
+
+
import javax.imageio.ImageIO;
import java.awt.*;
@@ -38,13 +38,13 @@ public class WatermarkerUtil {
*/
private Color fontColor = Color.WHITE;
/**
- * 默认的水印右侧距离原图最右边的距离
+ * 默认的水印左侧距离原图最左边的距离
*/
- private int x = 10;
+ private int x = 5;
/**
* 默认的水印的下侧距离原图下侧的距离
*/
- private int y = 10;
+ private int y = 5;
/**
* 默认的透明度
*/
@@ -87,13 +87,14 @@ public class WatermarkerUtil {
}
//7.设置水印透明的样式
graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));
- //8.将文字画在图片之上,放在右下角.参数x表示是文字的左侧距离图片左侧的距离,文字的右侧表示是文字的下侧距离图片上册的距离
- graphics.drawString(text,width-(x+textLength),height-(y));
+ //8.将文字画在图片之上,放在右下角.参数x表示是文字的左侧距离图片左侧的距离,文字的右侧表示是文字的下侧距离图片上侧的距离
+ graphics.drawString(text,x,height-(y));
graphics.dispose();
//9.将bufferImage输出成文件,使用uuid避免文件名重复
file = new File(filePath + "/" + UUID.randomUUID()+ imageName);
- JPEGImageEncoder img = JPEGCodec.createJPEGEncoder(new FileOutputStream(file));
- img.encode(bufferedImage);
+ int lastIndexOf = imageName.lastIndexOf(".");
+ String extensionName = imageName.substring(lastIndexOf+1);
+ ImageIO.write(bufferedImage,extensionName,new FileOutputStream(file));
//10.返回加上水印之后的图片文件对象
return file;
} catch (IOException e) {
@@ -121,8 +122,9 @@ public class WatermarkerUtil {
textWidth +=0.5F;
}
}
- //2.等同的中文字符向上取整然后乘于单个字符的宽度
- return (int) Math.ceil(textWidth)*fontSize;
+
+ //2.等同的中文字符向上取整然后乘于单个中文字符的宽度,
+ return Math.round(textWidth)*fontSize;
}
public String getFontFamily() {
diff --git a/common/src/main/resources/META-INF/spring.factories b/common/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..cde5eb6
--- /dev/null
+++ b/common/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+# 自动化装配
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.micro.fast.common.CommonApplication
\ No newline at end of file
diff --git a/common/src/test/java/com/micro/fast/common/CommonApplicationTests.java b/common/src/test/java/com/micro/fast/common/CommonApplicationTests.java
deleted file mode 100644
index cc7bb86..0000000
--- a/common/src/test/java/com/micro/fast/common/CommonApplicationTests.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.micro.fast.common;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class CommonApplicationTests {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/common/src/test/java/com/micro/fast/common/util/AESUtilTest.java b/common/src/test/java/com/micro/fast/common/util/AESUtilTest.java
new file mode 100644
index 0000000..39e28db
--- /dev/null
+++ b/common/src/test/java/com/micro/fast/common/util/AESUtilTest.java
@@ -0,0 +1,25 @@
+package com.micro.fast.common.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class AESUtilTest {
+ @Test
+ public void AESEncode() throws Exception {
+ String[] keys = new String[]{"studyj2e"};
+ System.out.println("key | AESEncode | AESDecode");
+ for (String key : keys) {
+ System.out.print(key+" | ");
+ String aesEncode = AESUtil.AESEncode("li");
+ System.out.print(aesEncode+" | ");
+ String aesDecode = AESUtil.AESDecode(aesEncode);
+ System.out.println(aesDecode);
+ }
+ }
+
+ @Test
+ public void AESDecode() throws Exception {
+ }
+
+}
\ No newline at end of file
diff --git a/common/src/test/java/com/micro/fast/common/util/WatermarkerUtilTest.java b/common/src/test/java/com/micro/fast/common/util/WatermarkerUtilTest.java
index ee49fef..ff6bb7b 100644
--- a/common/src/test/java/com/micro/fast/common/util/WatermarkerUtilTest.java
+++ b/common/src/test/java/com/micro/fast/common/util/WatermarkerUtilTest.java
@@ -9,7 +9,7 @@ import static org.junit.Assert.*;
public class WatermarkerUtilTest {
@Test
public void markerWord() throws Exception {
- new WatermarkerUtil().markerWord("李守余",new File("/root/dev/u=132629542,1898058257&fm=27&gp=0.jpg"),"/home");
+ new WatermarkerUtil().markerWord("www.suixiangcang.com",new File("/root/dev/u=132629542,1898058257&fm=27&gp=0.jpg"),"/home");
}
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index cbc8e50..d0b923e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,10 +20,10 @@
1.8
+ common
config-server
eureka-server
eureka-server2
upms
- common
diff --git a/upms/pom.xml b/upms/pom.xml
index ff761af..e40b48f 100644
--- a/upms/pom.xml
+++ b/upms/pom.xml
@@ -68,6 +68,11 @@
spring-boot-starter-test
test
+
+ com.micro.fast
+ common
+ 0.0.1-SNAPSHOT
+