springboot用法和与各种框架、组件等结合使用,包括springboot的注解分析、路径分析、取得内置对象、项目打包、配置环境属性、读取资源文件、Bean配置、模板渲染、基于yml的多profile配置、基于properties的多profile、添加数据验证、配置错误页、全局异常处理、配置Tomcat运行、配置https访问路径、信息显示、内置对象、显示对象信息、文件上传、使用文件服务器、拦截器、配置druid数据库连接池、整合MyBatis框架、事务控制、Druid监控、整合ActiveMQ、整合RabbitMQ、整合kafka、邮件发送、定时调度、Actuator监控、整合Redis数据库、整合Restfui框架、整合Shiro
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package cn.mldn.microboot;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication // 启动SpringBoot程序,而后自带子包扫描
|
||||
public class StartSpringBootMain {
|
||||
static {
|
||||
System.setProperty("java.security.auth.login.config",
|
||||
"d:/kafka_client_jaas.conf"); // 表示系统环境属性
|
||||
}
|
||||
public static void main(String[] args) throws Exception {
|
||||
SpringApplication.run(StartSpringBootMain.class, args);
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.mldn.microboot.util.controller;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.context.MessageSource;
|
||||
|
||||
public abstract class AbstractBaseController {
|
||||
@Resource
|
||||
private MessageSource messageSource; // 自动注入此资源对象
|
||||
public String getMessage(String key, String... args) {
|
||||
return this.messageSource.getMessage(key, args, Locale.getDefault());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.mldn.microboot.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class Dept implements Serializable {
|
||||
private Long deptno ;
|
||||
private String dname ;
|
||||
public Long getDeptno() {
|
||||
return deptno;
|
||||
}
|
||||
public void setDeptno(Long deptno) {
|
||||
this.deptno = deptno;
|
||||
}
|
||||
public String getDname() {
|
||||
return dname;
|
||||
}
|
||||
public void setDname(String dname) {
|
||||
this.dname = dname;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Dept [deptno=" + deptno + ", dname=" + dname + "]";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package cn.mldn.microboot.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class Member implements Serializable {
|
||||
private Long mid ;
|
||||
private String name ;
|
||||
private Integer age ;
|
||||
private Date birthday ;
|
||||
private Double salary ;
|
||||
public Long getMid() {
|
||||
return mid;
|
||||
}
|
||||
public void setMid(Long mid) {
|
||||
this.mid = mid;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
public Integer getAge() {
|
||||
return age;
|
||||
}
|
||||
public void setAge(Integer age) {
|
||||
this.age = age;
|
||||
}
|
||||
public Date getBirthday() {
|
||||
return birthday;
|
||||
}
|
||||
public void setBirthday(Date birthday) {
|
||||
this.birthday = birthday;
|
||||
}
|
||||
public Double getSalary() {
|
||||
return salary;
|
||||
}
|
||||
public void setSalary(Double salary) {
|
||||
this.salary = salary;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
DROP DATBASE IF EXISTS mldn ;
|
||||
CREATE DATBASE mldn CHARACTER SET UTF8 ;
|
||||
USE mldn ;
|
||||
CREATE TABLE dept (
|
||||
deptno BIGINT AUTO_INCREMENT ,
|
||||
dname VARCHAR(50) ,
|
||||
CONSTRAINT pk_deptno PRIMARY KEY(deptno)
|
||||
) ;
|
||||
INSERT INTO dept(dname) VALUES ('开发部') ;
|
||||
INSERT INTO dept(dname) VALUES ('财务部') ;
|
||||
INSERT INTO dept(dname) VALUES ('市场部') ;
|
||||
INSERT INTO dept(dname) VALUES ('后勤部') ;
|
||||
INSERT INTO dept(dname) VALUES ('公关部') ;
|
||||
@@ -0,0 +1,11 @@
|
||||
spring:
|
||||
messages:
|
||||
basename: i18n/Messages,i18n/Pages
|
||||
mail:
|
||||
host: smtp.qq.com
|
||||
username: 你自己的用户名,110@qq.com
|
||||
password: xxxxx
|
||||
properties:
|
||||
mail.smtp.auth: true
|
||||
mail.smtp.starttls.enable: true
|
||||
mail.smtp.starttls.required: true
|
||||
@@ -0,0 +1,2 @@
|
||||
welcome.url=www.mldn.cn
|
||||
welcome.msg=\u6b22\u8fce{0}\u5149\u4e34\uff01
|
||||
@@ -0,0 +1,2 @@
|
||||
member.add.page=/pages/back/admin/member/member_add.jsp
|
||||
member.add.action=/pages/back/admin/member/member_add.action
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<configuration scan="true">
|
||||
<property name="APP" value="${project.artifactId}" />
|
||||
<property name="LOG_HOME" value="/data/www/log/${APP}" />
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<appender name="DETAIL"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
|
||||
<File>${LOG_HOME}/${APP}_detail.log</File>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/${APP}_detail.log.%d{yyyyMMdd}</fileNamePattern>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
<appender name="ACCESS"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
|
||||
<File>${LOG_HOME}/${APP}_access.log</File>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS};%X{ServiceId};%m%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/${APP}_access.log.%d{yyyyMMdd}</fileNamePattern>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
|
||||
<logger name="ACCESS">
|
||||
<appender-ref ref="ACCESS" />
|
||||
</logger>
|
||||
<logger name="druid.sql.Statement" level="DEBUG" />
|
||||
<logger name="cn.mldn.microboot.dao" level="TRACE" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="DETAIL" />
|
||||
<appender-ref ref="CONSOLE" />
|
||||
</root>
|
||||
</configuration>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?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="cn.mldn.microboot.dao.IDeptDAO">
|
||||
<select id="findAll" resultType="Dept">
|
||||
SELECT deptno,dname FROM dept ;
|
||||
</select>
|
||||
<insert id="doCreate" parameterType="Dept">
|
||||
INSERT INTO dept(dname) VALUES (#{dname}) ;
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?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>
|
||||
<!-- 进行Mybatis的相应的环境的属性定义 -->
|
||||
<settings> <!-- 在本项目之中开启二级缓存 -->
|
||||
<setting name="cacheEnabled" value="true"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{js/main.js}"></script>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>www.mldn.cn</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
window.onload = function() {
|
||||
console.log("****** www.mldn.cn ******") ;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>www.mldn.cn</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{/js/main.js}"></script>
|
||||
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
|
||||
姓名:<input type="text" name="name"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
<input type="submit" value="上传"/>
|
||||
</form>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2ANT4kAALWT3AMif079.jpeg')}">查看照片</a>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2AUVINAAA9nfksZs0713.png')}">查看照片</a>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2AOgxGAC-AAARLh5I67.jpeg')}">查看照片</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{/js/main.js}"></script>
|
||||
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<img th:src="${image}"/>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.mldn.microboot;
|
||||
import javax.annotation.Resource;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.mail.SimpleMailMessage;
|
||||
import org.springframework.mail.javamail.JavaMailSender;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
@SpringBootTest(classes = StartSpringBootMain.class)
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@WebAppConfiguration
|
||||
public class TestMail {
|
||||
@Resource
|
||||
private JavaMailSender javaMailSender ;
|
||||
@Test
|
||||
public void testSendMail() {
|
||||
SimpleMailMessage message = new SimpleMailMessage() ; // 要发送的消息内容
|
||||
message.setFrom("你自己的邮箱地址,110@qq.com");
|
||||
message.setTo("接收者的邮箱地址,220@qq.com");
|
||||
message.setSubject("测试邮件(来自老李的祝福,www.mldn.cn)");
|
||||
message.setText("好好学习,天天向上,学习就登录www.mldn.cn");
|
||||
this.javaMailSender.send(message);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user