Spring Boot
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.xwolf;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
@MapperScan("com.xwolf.boot.dao")
|
||||
public class BootApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(BootApplication.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.xwolf.boot.config;
|
||||
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.alibaba.druid.support.http.StatViewServlet;
|
||||
import com.alibaba.druid.support.http.WebStatFilter;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
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.Profile;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* </p>
|
||||
*
|
||||
* @author xwolf
|
||||
* @date 2017-02-25 08:14
|
||||
* @since V1.0.0
|
||||
*/
|
||||
@Configuration
|
||||
public class DataSourceConfig {
|
||||
|
||||
@ConfigurationProperties(prefix = "datasource.druid")
|
||||
@Bean(name="datasource",initMethod = "init",destroyMethod = "close")
|
||||
public DruidDataSource getDataSource(){
|
||||
return new DruidDataSource();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager(){
|
||||
return new DataSourceTransactionManager(getDataSource());
|
||||
}
|
||||
|
||||
// 指定环境下dev 开启监控
|
||||
@Bean
|
||||
@Profile("dev")
|
||||
public FilterRegistrationBean druidFilter() {
|
||||
FilterRegistrationBean registration = new FilterRegistrationBean();
|
||||
registration.setFilter(new WebStatFilter());
|
||||
Map<String, String> intParams = new HashMap<>();
|
||||
intParams.put("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
|
||||
registration.setName("DruidWebStatFilter");
|
||||
registration.setUrlPatterns(Lists.newArrayList("/*"));
|
||||
registration.setInitParameters(intParams);
|
||||
return registration;
|
||||
}
|
||||
|
||||
//数据源监控
|
||||
@Bean
|
||||
@Profile("dev")
|
||||
public ServletRegistrationBean servletRegistrationBean() {
|
||||
ServletRegistrationBean registration = new ServletRegistrationBean();
|
||||
registration.setServlet(new StatViewServlet());
|
||||
registration.setName("druid");
|
||||
registration.setUrlMappings(Lists.newArrayList("/druid/*"));
|
||||
//自定义添加初始化参数
|
||||
Map<String, String> intParams = new HashMap<>();
|
||||
intParams.put("loginUsername","druid");
|
||||
intParams.put("loginPassword","druid");
|
||||
registration.setName("DruidWebStatFilter");
|
||||
registration.setInitParameters(intParams);
|
||||
return registration;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.xwolf.boot.controller;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.xwolf.boot.entity.User;
|
||||
import com.xwolf.boot.service.IUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* </p>
|
||||
*
|
||||
* @author xwolf
|
||||
* @date 2017-02-25 09:20
|
||||
* @since V1.0.0
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("user")
|
||||
@Slf4j
|
||||
public class UserController {
|
||||
|
||||
@Autowired
|
||||
private IUserService userService;
|
||||
|
||||
@RequestMapping("add")
|
||||
@ResponseBody
|
||||
public String insert(@RequestParam(value = "name",defaultValue = "")String name){
|
||||
User user = new User();
|
||||
user.setUname(name);
|
||||
user.setBirth(new Date());
|
||||
log.info("请求参数:{}",user);
|
||||
return userService.insert(user);
|
||||
}
|
||||
|
||||
@RequestMapping("list/{start}/{size}")
|
||||
public PageInfo<User> getUserList(@PathVariable("start")int start,@PathVariable("size")int size){
|
||||
PageHelper.startPage(start,size);
|
||||
List<User> list= userService.getList();
|
||||
return new PageInfo<>(list);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xwolf.boot.dao;
|
||||
|
||||
import com.xwolf.boot.entity.User;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* </p>
|
||||
*
|
||||
* @author xwolf
|
||||
* @date 2017-02-25 09:07
|
||||
* @since V1.0.0
|
||||
*/
|
||||
public interface IUserDao {
|
||||
|
||||
int insert(User user);
|
||||
|
||||
List<User> queryList();
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xwolf.boot.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* </p>
|
||||
*
|
||||
* @author xwolf
|
||||
* @date 2017-02-25 09:00
|
||||
* @since V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@Slf4j
|
||||
public class User {
|
||||
|
||||
private int uid;
|
||||
private String uname;
|
||||
private Date birth;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xwolf.boot.service;
|
||||
|
||||
import com.xwolf.boot.entity.User;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* </p>
|
||||
*
|
||||
* @author xwolf
|
||||
* @date 2017-02-25 09:16
|
||||
* @since V1.0.0
|
||||
*/
|
||||
public interface IUserService {
|
||||
|
||||
String insert(User user);
|
||||
|
||||
List<User> getList();
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.xwolf.boot.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xwolf.boot.dao.IUserDao;
|
||||
import com.xwolf.boot.entity.User;
|
||||
import com.xwolf.boot.service.IUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* </p>
|
||||
*
|
||||
* @author xwolf
|
||||
* @date 2017-02-25 09:17
|
||||
* @since V1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class UserServiceImpl implements IUserService {
|
||||
@Autowired
|
||||
private IUserDao userDao;
|
||||
|
||||
@Override
|
||||
public String insert(User user) {
|
||||
int resultInt=userDao.insert(user);
|
||||
JSONObject result = new JSONObject();
|
||||
if(resultInt>0){
|
||||
result.put("success",true);
|
||||
result.put("msg","成功");
|
||||
}else{
|
||||
result.put("success",false);
|
||||
result.put("msg","失败");
|
||||
}
|
||||
return result.toJSONString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<User> getList() {
|
||||
return userDao.queryList();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
spring:
|
||||
application:
|
||||
name: boot
|
||||
|
||||
http:
|
||||
encoding:
|
||||
force: true
|
||||
charset: UTF-8
|
||||
enabled: true
|
||||
#指定项目的运行环境,可自动启用或停止某些功能
|
||||
profiles:
|
||||
active: dev
|
||||
|
||||
|
||||
datasource:
|
||||
druid:
|
||||
url: jdbc:mysql://127.0.0.1:3306/wifi2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&createDatabaseIfNotExist=true
|
||||
username: eap
|
||||
password: eap@eap
|
||||
filters: stat,slf4j
|
||||
initialSize: 10
|
||||
maxActive: 100
|
||||
maxWait: 60000
|
||||
minIdle: 5
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: SELECT 'x'
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
poolPreparedStatements: true
|
||||
maxPoolPreparedStatementPerConnectionSize: 20
|
||||
logging:
|
||||
config: classpath:logback.xml
|
||||
# file: d:/logs/boot.log
|
||||
|
||||
server:
|
||||
port: 8080
|
||||
session:
|
||||
timeout: 30
|
||||
|
||||
mybatis:
|
||||
mapper-locations: classpath:mapper/*.xml
|
||||
type-aliases-package: com.xwolf.boot.entity
|
||||
check-config-location: true
|
||||
config-location: classpath:mybatis.xml
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<configuration>
|
||||
<jmxConfigurator />
|
||||
<!-- 控制台输出日志 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
|
||||
%msg%n</pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->
|
||||
<appender name="FILE"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<File>/var/log/boot/boot.log</File>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
|
||||
<FileNamePattern>boot.log.%i.bak</FileNamePattern>
|
||||
<MinIndex>1</MinIndex>
|
||||
<MaxIndex>12</MaxIndex>
|
||||
</rollingPolicy>
|
||||
<triggeringPolicy
|
||||
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
||||
<MaxFileSize>1000MB</MaxFileSize>
|
||||
</triggeringPolicy>
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
|
||||
%msg%n</Pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
<!--这里指定logger name 是为jmx设置日志级别做铺垫 -->
|
||||
<logger name="com.xwolf.boot">
|
||||
<level value="DEBUG" />
|
||||
<appender-ref ref="STDOUT" />
|
||||
<appender-ref ref="FILE" />
|
||||
</logger>
|
||||
</configuration>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
|
||||
<mapper namespace="com.xwolf.boot.dao.IUserDao" >
|
||||
<resultMap id="baseResultMap" type="com.xwolf.boot.entity.User" >
|
||||
<id column="uid" jdbcType="INTEGER" property="uid"/>
|
||||
<result column="uname" property="uname" jdbcType="VARCHAR"/>
|
||||
<result column="birth" property="birth" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column">
|
||||
uid,uname,birth
|
||||
</sql>
|
||||
<insert id="insert" parameterType="com.xwolf.boot.entity.User" >
|
||||
insert into user (uid, uname,birth)
|
||||
values (#{uid,jdbcType=INTEGER}, #{uname,jdbcType=VARCHAR},#{birth,jdbcType=TIMESTAMP})
|
||||
</insert>
|
||||
|
||||
<select id="queryList" resultMap="baseResultMap" >
|
||||
select <include refid="Base_Column"/> from user
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration PUBLIC
|
||||
"-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
|
||||
<configuration>
|
||||
|
||||
<plugins>
|
||||
<plugin interceptor="com.github.pagehelper.PageHelper">
|
||||
<!-- 4.0.0以后版本可以不设置该参数 -->
|
||||
<property name="dialect" value="mysql"/>
|
||||
<!-- 该参数默认为false -->
|
||||
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
|
||||
<!-- 和startPage中的pageNum效果一样-->
|
||||
<property name="offsetAsPageNum" value="true"/>
|
||||
<!-- 该参数默认为false -->
|
||||
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
|
||||
<property name="rowBoundsWithCount" value="true"/>
|
||||
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
|
||||
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
|
||||
<property name="pageSizeZero" value="true"/>
|
||||
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
|
||||
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
|
||||
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
|
||||
<property name="reasonable" value="true"/>
|
||||
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
|
||||
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
|
||||
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
|
||||
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
|
||||
<property name="params" value="pageNum=start;pageSize=limit;"/>
|
||||
<!-- 支持通过Mapper接口参数来传递分页参数 -->
|
||||
<property name="supportMethodsArguments" value="true"/>
|
||||
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
|
||||
<property name="returnPageInfo" value="check"/>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.xwolf;
|
||||
|
||||
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 BootApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user