commit
c26418aaf8
@ -0,0 +1,120 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
|
||||||
|
<groupId>org.pqh</groupId> |
||||||
|
<artifactId>webCrawler</artifactId> |
||||||
|
<packaging>pom</packaging> |
||||||
|
<version>1.0</version> |
||||||
|
|
||||||
|
<description>简单的网络爬虫客户端</description> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
||||||
|
<java.version>1.8</java.version> |
||||||
|
<mysql.version>6.0.6</mysql.version> |
||||||
|
</properties> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework</groupId> |
||||||
|
<artifactId>spring-web</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework</groupId> |
||||||
|
<artifactId>spring-webmvc</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework</groupId> |
||||||
|
<artifactId>spring-orm</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<!--<dependency>--> |
||||||
|
<!--<groupId>org.springframework</groupId>--> |
||||||
|
<!--<artifactId>spring-test</artifactId>--> |
||||||
|
<!--<version>LATEST</version>--> |
||||||
|
<!--</dependency>--> |
||||||
|
|
||||||
|
<!--<dependency>--> |
||||||
|
<!--<groupId>junit</groupId>--> |
||||||
|
<!--<artifactId>junit</artifactId>--> |
||||||
|
<!--<version>LATEST</version>--> |
||||||
|
<!--</dependency>--> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.commons</groupId> |
||||||
|
<artifactId>commons-dbcp2</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.hibernate</groupId> |
||||||
|
<artifactId>hibernate-core</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>mysql</groupId> |
||||||
|
<artifactId>mysql-connector-java</artifactId> |
||||||
|
<version>${mysql.version}</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.fasterxml.jackson.core</groupId> |
||||||
|
<artifactId>jackson-databind</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.aspectj</groupId> |
||||||
|
<artifactId>aspectjweaver</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.logging.log4j</groupId> |
||||||
|
<artifactId>log4j-api</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.logging.log4j</groupId> |
||||||
|
<artifactId>log4j-core</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.fusesource.jansi</groupId> |
||||||
|
<artifactId>jansi</artifactId> |
||||||
|
<version>LATEST</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
|
||||||
|
|
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||||
|
<artifactId>maven-compiler-plugin</artifactId> |
||||||
|
<version>3.6.1</version> |
||||||
|
<configuration> |
||||||
|
<source>${java.version}</source> |
||||||
|
<target>${java.version}</target> |
||||||
|
<encoding>${project.build.sourceEncoding}</encoding> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,17 @@ |
|||||||
|
package org.pqh.aop; |
||||||
|
|
||||||
|
import org.springframework.aop.MethodBeforeAdvice; |
||||||
|
|
||||||
|
import java.lang.reflect.Method; |
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
public class InsertAdvice implements MethodBeforeAdvice { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void before(Method method, Object[] objects, Object o) throws Throwable { |
||||||
|
System.out.println("类:"+o.getClass()+",方法:"+method.getName()+"被调用,传入参数:"+ Arrays.asList(objects)); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package org.pqh.aop; |
||||||
|
|
||||||
|
import org.pqh.dao.BaseDao; |
||||||
|
import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor; |
||||||
|
|
||||||
|
import java.lang.reflect.Method; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
public class InsertAdvisor extends StaticMethodMatcherPointcutAdvisor { |
||||||
|
@Override |
||||||
|
public boolean matches(Method method, Class<?> aClass) { |
||||||
|
return method.getName().equals("get")&& BaseDao.class.isAssignableFrom(aClass); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package org.pqh.aop; |
||||||
|
|
||||||
|
import org.aspectj.lang.JoinPoint; |
||||||
|
import org.aspectj.lang.annotation.Aspect; |
||||||
|
import org.aspectj.lang.annotation.Before; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
@Aspect |
||||||
|
@Component |
||||||
|
public class LogAspect { |
||||||
|
|
||||||
|
@Before(value = "org.pqh.aop.MatcherRule.biliDaoRule()") |
||||||
|
public void curdCallAction(JoinPoint joinPoint){ |
||||||
|
for(Object arg:joinPoint.getArgs()){ |
||||||
|
System.out.println("参数"+arg); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package org.pqh.aop; |
||||||
|
|
||||||
|
import org.aspectj.lang.annotation.Pointcut; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
public class MatcherRule { |
||||||
|
@Pointcut("execution(* org.pqh.dao.BaseDao.*(..))") |
||||||
|
public void biliDaoRule(){} |
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
package org.pqh.config; |
||||||
|
|
||||||
|
import org.apache.commons.dbcp2.BasicDataSource; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.orm.hibernate5.HibernateTemplate; |
||||||
|
import org.springframework.orm.hibernate5.HibernateTransactionManager; |
||||||
|
import org.springframework.orm.hibernate5.LocalSessionFactoryBean; |
||||||
|
import org.springframework.transaction.annotation.EnableTransactionManagement; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.util.Properties; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/7/28. |
||||||
|
*/ |
||||||
|
@Configuration |
||||||
|
@EnableTransactionManagement |
||||||
|
public class HibernateConfig { |
||||||
|
|
||||||
|
private LocalSessionFactoryBean sessionFactoryBean; |
||||||
|
private BasicDataSource dataSource; |
||||||
|
|
||||||
|
public HibernateConfig() { |
||||||
|
dataSource=new BasicDataSource(); |
||||||
|
dataSource.setUrl("jdbc:mysql://localhost:3306/bilibili?serverTimezone=UTC&&useSSL=true"); |
||||||
|
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); |
||||||
|
dataSource.setUsername("root"); |
||||||
|
dataSource.setPassword("123456"); |
||||||
|
sessionFactoryBean = new LocalSessionFactoryBean(); |
||||||
|
sessionFactoryBean.setDataSource(dataSource); |
||||||
|
Properties properties=new Properties(); |
||||||
|
properties.setProperty("hibernate.connection.pool_size","5"); |
||||||
|
properties.setProperty("hibernate.jdbc.fetch_size","50"); |
||||||
|
properties.setProperty("hibernate.dialect","org.hibernate.dialect.MySQL57Dialect"); |
||||||
|
sessionFactoryBean.setHibernateProperties(properties); |
||||||
|
sessionFactoryBean.setPackagesToScan("org.pqh.model"); |
||||||
|
try { |
||||||
|
sessionFactoryBean.afterPropertiesSet(); |
||||||
|
} catch (IOException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Bean("transactionManager") |
||||||
|
public HibernateTransactionManager hibernateTransactionManager(){ |
||||||
|
HibernateTransactionManager hibernateTransactionManager=new HibernateTransactionManager(); |
||||||
|
hibernateTransactionManager.setSessionFactory(this.sessionFactoryBean.getObject()); |
||||||
|
return hibernateTransactionManager; |
||||||
|
} |
||||||
|
|
||||||
|
@Bean(name="hibernateTemplate") |
||||||
|
public HibernateTemplate hibernateTemplate(){ |
||||||
|
HibernateTemplate hibernateTemplate=new HibernateTemplate(); |
||||||
|
hibernateTemplate.setSessionFactory(sessionFactoryBean.getObject()); |
||||||
|
return hibernateTemplate; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
package org.pqh.config; |
||||||
|
|
||||||
|
import org.springframework.context.annotation.*; |
||||||
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc; |
||||||
|
import org.springframework.web.servlet.view.InternalResourceViewResolver; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/7/28. |
||||||
|
*/ |
||||||
|
@Configuration |
||||||
|
@EnableWebMvc |
||||||
|
@ComponentScan(basePackages = "org.pqh") |
||||||
|
@EnableAspectJAutoProxy |
||||||
|
@Import(HibernateConfig.class) |
||||||
|
public class SpringConfig{ |
||||||
|
|
||||||
|
|
||||||
|
@Bean("viewReslover") |
||||||
|
public InternalResourceViewResolver internalResourceViewResolver(){ |
||||||
|
InternalResourceViewResolver internalResourceViewResolver=new InternalResourceViewResolver(); |
||||||
|
internalResourceViewResolver.setPrefix("/WEB-INF/jsp/"); |
||||||
|
internalResourceViewResolver.setSuffix(".jsp"); |
||||||
|
return internalResourceViewResolver; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package org.pqh.config; |
||||||
|
|
||||||
|
import org.springframework.web.WebApplicationInitializer; |
||||||
|
import org.springframework.web.context.ContextLoaderListener; |
||||||
|
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; |
||||||
|
import org.springframework.web.filter.CharacterEncodingFilter; |
||||||
|
import org.springframework.web.servlet.DispatcherServlet; |
||||||
|
|
||||||
|
import javax.servlet.*; |
||||||
|
import java.util.EnumSet; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/7/28. |
||||||
|
*/ |
||||||
|
public class WebConfig implements WebApplicationInitializer { |
||||||
|
|
||||||
|
private String suffix="*.miku"; |
||||||
|
|
||||||
|
private String fileEncoding="UTF-8"; |
||||||
|
|
||||||
|
public void onStartup(ServletContext servletContext) throws ServletException { |
||||||
|
//基于注解配置的上下文
|
||||||
|
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); |
||||||
|
//注册Spring容器配置类
|
||||||
|
context.register(SpringConfig.class); |
||||||
|
ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context)); |
||||||
|
//配置映射路径
|
||||||
|
servletContext.log("DispatcherServlet配置映射路径匹配规则:"+suffix); |
||||||
|
servlet.addMapping("/",suffix); |
||||||
|
//启动顺序
|
||||||
|
servlet.setLoadOnStartup(1); |
||||||
|
|
||||||
|
|
||||||
|
servletContext.addListener(new ContextLoaderListener(context)); |
||||||
|
|
||||||
|
FilterRegistration.Dynamic characterEncodingFilter=servletContext.addFilter("CharacterEncodingFilter", CharacterEncodingFilter.class); |
||||||
|
servletContext.log("CharacterEncodingFilter设置编码:"+fileEncoding); |
||||||
|
characterEncodingFilter.setInitParameter("encoding",fileEncoding); |
||||||
|
characterEncodingFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),true,"/*"); |
||||||
|
|
||||||
|
// FilterRegistration.Dynamic openSessionInViewFilter=servletContext.addFilter("OpenSessionInViewFilter", OpenSessionInViewFilter.class);
|
||||||
|
// openSessionInViewFilter.setInitParameter("flushMode","AUTO");
|
||||||
|
// openSessionInViewFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),true,"/*");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
@ -0,0 +1,49 @@ |
|||||||
|
package org.pqh.controller; |
||||||
|
|
||||||
|
import org.pqh.dao.BaseDao; |
||||||
|
import org.pqh.model.AbstractModel; |
||||||
|
import org.pqh.util.DBAction; |
||||||
|
import org.springframework.dao.DataAccessException; |
||||||
|
import org.springframework.stereotype.Controller; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/7/28. |
||||||
|
*/ |
||||||
|
@Controller |
||||||
|
public abstract class AbstractController<T extends AbstractModel> { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private BaseDao baseDao; |
||||||
|
|
||||||
|
@RequestMapping("/") |
||||||
|
public String index(){ |
||||||
|
return "index"; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public String curd(DBAction action,T formModel){ |
||||||
|
Class<T> tClass= (Class<T>) formModel.getClass(); |
||||||
|
try { |
||||||
|
switch (action) { |
||||||
|
case Insert: |
||||||
|
case Update: |
||||||
|
baseDao.saveOrUpdate(formModel); |
||||||
|
break; |
||||||
|
case Select: |
||||||
|
T model = baseDao.get(tClass, formModel.primaryKey()); |
||||||
|
return model == null ? "找不到主键=" + formModel.primaryKey() + "" : model.toString(); |
||||||
|
case Delete: |
||||||
|
baseDao.delete(tClass, formModel.primaryKey()); |
||||||
|
break; |
||||||
|
} |
||||||
|
return action+" success"; |
||||||
|
}catch (DataAccessException e){ |
||||||
|
|
||||||
|
} |
||||||
|
return action+" fail"; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package org.pqh.controller; |
||||||
|
|
||||||
|
import org.pqh.model.Param; |
||||||
|
import org.pqh.util.DBAction; |
||||||
|
import org.springframework.stereotype.Controller; |
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute; |
||||||
|
import org.springframework.web.bind.annotation.PathVariable; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.ResponseBody; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
@Controller |
||||||
|
public class ParamController extends AbstractController<Param> { |
||||||
|
@Override |
||||||
|
@ResponseBody |
||||||
|
@RequestMapping(value = "/param/{action}",produces = "text/html;charset=UTF-8") |
||||||
|
public String curd(@PathVariable DBAction action,@ModelAttribute Param formModel) { |
||||||
|
return super.curd(action, formModel); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package org.pqh.dao; |
||||||
|
|
||||||
|
import org.pqh.model.AbstractModel; |
||||||
|
import org.springframework.dao.DataAccessException; |
||||||
|
import org.springframework.orm.hibernate5.HibernateTemplate; |
||||||
|
import org.springframework.stereotype.Repository; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/7/31. |
||||||
|
*/ |
||||||
|
@Repository |
||||||
|
@Transactional |
||||||
|
public class BaseDao { |
||||||
|
@Resource |
||||||
|
private HibernateTemplate hibernateTemplate; |
||||||
|
|
||||||
|
public <T extends AbstractModel>T get(Class<T> T, Serializable pk) throws DataAccessException{ |
||||||
|
return hibernateTemplate.get(T,pk); |
||||||
|
} |
||||||
|
|
||||||
|
public <T extends AbstractModel> void saveOrUpdate(T model)throws DataAccessException{ |
||||||
|
hibernateTemplate.saveOrUpdate(model); |
||||||
|
} |
||||||
|
|
||||||
|
public <T extends AbstractModel> void delete(Class<T> T,Serializable key) throws DataAccessException { |
||||||
|
T model= get(T,key); |
||||||
|
if(model!=null){ |
||||||
|
hibernateTemplate.delete(model); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package org.pqh.model; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
|
||||||
|
public abstract class AbstractModel { |
||||||
|
public abstract Serializable primaryKey(); |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
package org.pqh.model; |
||||||
|
|
||||||
|
import javax.persistence.Column; |
||||||
|
import javax.persistence.Entity; |
||||||
|
import javax.persistence.Id; |
||||||
|
import javax.persistence.Table; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
@Entity |
||||||
|
@Table(name="testjson") |
||||||
|
public class Config extends AbstractModel{ |
||||||
|
|
||||||
|
private String jackson; |
||||||
|
|
||||||
|
@Id |
||||||
|
@Column(name = "jackson") |
||||||
|
public String getJackson() { |
||||||
|
return jackson; |
||||||
|
} |
||||||
|
|
||||||
|
public void setJackson(String jackson) { |
||||||
|
this.jackson = jackson; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object o) { |
||||||
|
if (this == o) return true; |
||||||
|
if (o == null || getClass() != o.getClass()) return false; |
||||||
|
|
||||||
|
Config config = (Config) o; |
||||||
|
|
||||||
|
return jackson.equals(config.jackson); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return jackson.hashCode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable primaryKey() { |
||||||
|
return getJackson(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,83 @@ |
|||||||
|
package org.pqh.model; |
||||||
|
|
||||||
|
import javax.persistence.Basic; |
||||||
|
import javax.persistence.Column; |
||||||
|
import javax.persistence.Entity; |
||||||
|
import javax.persistence.Id; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/7/31. |
||||||
|
*/ |
||||||
|
@Entity |
||||||
|
public class Param extends AbstractModel{ |
||||||
|
private String key; |
||||||
|
private String value; |
||||||
|
private String desc; |
||||||
|
|
||||||
|
@Id |
||||||
|
@Column(name = "`key`") |
||||||
|
public String getKey() { |
||||||
|
return key; |
||||||
|
} |
||||||
|
|
||||||
|
public void setKey(String key) { |
||||||
|
this.key = key; |
||||||
|
} |
||||||
|
|
||||||
|
@Basic |
||||||
|
@Column(name = "value") |
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
@Basic |
||||||
|
@Column(name = "`desc`") |
||||||
|
public String getDesc() { |
||||||
|
return desc; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDesc(String desc) { |
||||||
|
this.desc = desc; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object o) { |
||||||
|
if (this == o) return true; |
||||||
|
if (o == null || getClass() != o.getClass()) return false; |
||||||
|
|
||||||
|
Param param = (Param) o; |
||||||
|
|
||||||
|
if (key != null ? !key.equals(param.key) : param.key != null) return false; |
||||||
|
if (value != null ? !value.equals(param.value) : param.value != null) return false; |
||||||
|
if (desc != null ? !desc.equals(param.desc) : param.desc != null) return false; |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
int result = key != null ? key.hashCode() : 0; |
||||||
|
result = 31 * result + (value != null ? value.hashCode() : 0); |
||||||
|
result = 31 * result + (desc != null ? desc.hashCode() : 0); |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return "Param{" + |
||||||
|
"key='" + key + '\'' + |
||||||
|
", value='" + value + '\'' + |
||||||
|
", desc='" + desc + '\'' + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable primaryKey() { |
||||||
|
return getKey(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package org.pqh.util; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/2. |
||||||
|
*/ |
||||||
|
public enum DBAction { |
||||||
|
Insert, |
||||||
|
Update, |
||||||
|
Delete, |
||||||
|
Select |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Configuration monitorInterval="60" status="debug" > |
||||||
|
<Properties> |
||||||
|
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss} %p %l%n%m%n</Property> |
||||||
|
</Properties> |
||||||
|
<Appenders> |
||||||
|
<Console name="STDOUT" target="SYSTEM_OUT"> |
||||||
|
<PatternLayout pattern="${pattern}"></PatternLayout> |
||||||
|
</Console> |
||||||
|
<File name="File" fileName="logs/info.log" bufferedIO="true" immediateFlush="true"> |
||||||
|
<PatternLayout pattern="${pattern}"></PatternLayout> |
||||||
|
</File> |
||||||
|
|
||||||
|
</Appenders> |
||||||
|
<Loggers> |
||||||
|
<Logger name="org.apache.logging.log4j.test1" level="debug" additivity="false"> |
||||||
|
<AppenderRef ref="STDOUT"/> |
||||||
|
</Logger> |
||||||
|
<Logger name="org.apache.logging.log4j.test2" level="debug" additivity="false"> |
||||||
|
<AppenderRef ref="File"/> |
||||||
|
</Logger> |
||||||
|
<Root level="info"> |
||||||
|
<AppenderRef ref="STDOUT"/> |
||||||
|
</Root> |
||||||
|
</Loggers> |
||||||
|
</Configuration> |
@ -0,0 +1,10 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<title>Title</title> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<h1>hello world</h1> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,41 @@ |
|||||||
|
import org.apache.logging.log4j.LogManager; |
||||||
|
import org.apache.logging.log4j.Logger; |
||||||
|
import org.apache.logging.log4j.core.LoggerContext; |
||||||
|
|
||||||
|
import java.net.URI; |
||||||
|
import java.net.URISyntaxException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by reborn on 2017/8/3. |
||||||
|
*/ |
||||||
|
|
||||||
|
public class JunitTest { |
||||||
|
private static final Logger rootLogger= LogManager.getLogger(); |
||||||
|
private static final Logger consoleLogger= LogManager.getLogger("org.apache.logging.log4j.test1"); |
||||||
|
private static final Logger loggerFile= LogManager.getLogger("org.apache.logging.log4j.test2"); |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
// rootLogger.info("rootLogger");
|
||||||
|
// consoleLogger.info("consoleLogger");
|
||||||
|
// loggerFile.info("loggerFile");
|
||||||
|
|
||||||
|
// LoggerContext loggerContext= (LoggerContext) LogManager.getContext(false);
|
||||||
|
//
|
||||||
|
// Collection<org.apache.logging.log4j.core.Logger> loggers=loggerContext.getLoggers();
|
||||||
|
// for(org.apache.logging.log4j.core.Logger logger:loggers){
|
||||||
|
// logger.info(logger.getName());
|
||||||
|
// }
|
||||||
|
|
||||||
|
LoggerContext loggerContext= (LoggerContext) LogManager.getContext(false); |
||||||
|
try { |
||||||
|
loggerContext.setConfigLocation(new URI("https://github.com/luffy9412/Bilibili/blob/master/src/main/resources/log4j.properties")); |
||||||
|
} catch (URISyntaxException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
|
||||||
|
// loggerContext.setConfigLocation();
|
||||||
|
|
||||||
|
loggerContext.reconfigure(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue