Spring Boot:企業(yè)常用的 Starter以及實現(xiàn)
來源:cnblogs.com/SimpleWu/p/9798146.html
SpringBoot簡介
SpringBoot運行
SpringBoot目錄結(jié)構(gòu)
整合JdbcTemplate
@RestController
整合JSP
整合JPA
整合MyBatis
AOP功能使用
任務(wù)調(diào)度
整合RabbitMq
整合郵件發(fā)送
# SpringBoot簡介
2、開箱即用,提供各種默認(rèn)配置來簡化項目配置
3、內(nèi)嵌式容器簡化Web項目
4、沒有冗余代碼生成和XML配置的要求
# SpringBoot運行
<parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.0.5.RELEASEversion><relativePath/>parent><properties><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding><java.version>1.8java.version>properties>
<dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency>dependencies>
SpringbootFirstExperienceApplication.javapublic class SpringbootFirstExperienceApplication {public static void main(String[] args) {SpringApplication.run(SpringbootFirstExperienceApplication.class, args);}}
# SpringBoot目錄結(jié)構(gòu)
# 整合JdbcTemplate
<parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>1.5.2.RELEASEversion> parent> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-jdbcartifactId> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> dependencies>spring.datasource.url=jdbc:mysql://localhost:3306/mybatisspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver
public class EmployeeService {private JdbcTemplate jdbcTemplate;public boolean saveEmp(String name,String email,String gender){String sql = "insert into tal_employee values(null,?,?,?)";int result = jdbcTemplate.update(sql, name,email,gender);System.out.println("result : " + result);return result > 0 ? true:false;}}
public class EmployeeController {private EmployeeService employeeService;("/save")public String insert(String name,String email,String gender){boolean result = employeeService.saveEmp(name, email, gender);if(result){return "success";}return "error";}}
# @RestController
# 整合JSP
<parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>1.5.2.RELEASEversion>parent><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-tomcatartifactId>dependency><dependency><groupId>org.apache.tomcat.embedgroupId><artifactId>tomcat-embed-jasperartifactId>dependency>dependencies>
#配置試圖解析器前綴spring.mvc.view.prefix=/WEB-INF/views/#配置試圖解析器后綴spring.mvc.view.suffix=.jsp
# 整合JPA
<parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>1.5.2.RELEASEversion>parent><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-data-jpaartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId>dependency>dependencies>
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver
(name="tal_employee")public class Employee implements Serializable{(strategy = GenerationType.AUTO)private Integer id;(name="last_Name")private String lastName;private String email;private String gender;//get set 省略}
public interface EmployeeDao extends JpaRepository<Employee, Integer>{}
public class EmployeeController {private EmployeeDao employeeDao;public ListgetEmployees(){ Listemployees = employeeDao.findAll(); System.out.println(employees);return employees;}}
# 整合MyBatis
<parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>1.5.2.RELEASEversion>parent><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-jdbcartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-loggingartifactId>dependency><dependency><groupId>org.mybatis.spring.bootgroupId><artifactId>mybatis-spring-boot-starterartifactId><version>1.2.2version>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId>dependency>dependencies>
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver##############datasource classpath 數(shù)據(jù)連接池地址###############spring.datasource.type=com.alibaba.druid.pool.DruidDataSource#指定我們的mapper.xml位置mybatis.mapper-locations=classpath:com/simple/springboot/mybatis/dao/mapper/*.xml#entity.class 指定我們實體類所在包位置mybatis.type-aliases-package=com.simple.springboot.mybatis.entity
# AOP功能使用
package com.simple.springboot.aop;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;public class SpringBootAspect {/*** 定義一個切入點* @author:SimpleWu* @Date:2018年10月12日*/public void aop(){}/*** 定義一個前置通知* @author:SimpleWu* @Date:2018年10月12日*/public void aopBefore(){System.out.println("前置通知 SpringBootAspect....aopBefore");}/*** 定義一個后置通知* @author:SimpleWu* @Date:2018年10月12日*/public void aopAfter(){System.out.println("后置通知 SpringBootAspect....aopAfter");}/*** 處理未處理的JAVA異常* @author:SimpleWu* @Date:2018年10月12日*/public void exception(Exception e){System.out.println("異常通知 SpringBootAspect...exception .." + e);}/*** 環(huán)繞通知* @author:SimpleWu* @throws Throwable* @Date:2018年10月12日*/public void around(ProceedingJoinPoint invocation) throws Throwable{System.out.println("SpringBootAspect..環(huán)繞通知 Before");invocation.proceed();System.out.println("SpringBootAspect..環(huán)繞通知 After");}}
# 任務(wù)調(diào)度
public class ScheduledTasks {private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");/*** 任務(wù)調(diào)度,每隔5秒執(zhí)行一次* @author:SimpleWu* @Date:2018年10月12日*/(fixedRate = 1000)public void reportCurrentTime() {System.out.println("現(xiàn)在時間:" + dateFormat.format(new Date()));}}
/*** SpringBoot使用任務(wù)調(diào)度* @EnableScheduling標(biāo)注程序開啟任務(wù)調(diào)度* @author :SimpleWu* @Date:2018年10月12日*/public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}}
# 整合RabbitMq
sudo yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-develsudo yum install epel-releasesudo yum install erlangsudo yum install socat
sudo wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpmsudo yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm
[]}]}].
rm rabbit\@rabbit@localhost-sasl.log
# 添加開機(jī)啟動RabbitMQ服務(wù)systemctl enable rabbitmq-server.service# 查看服務(wù)狀態(tài)systemctl status rabbitmq-server.service# 啟動服務(wù)systemctl start rabbitmq-server.service# 停止服務(wù)systemctl stop rabbitmq-server.service# 查看當(dāng)前所有用戶rabbitmqctl list_users# 查看默認(rèn)guest用戶的權(quán)限rabbitmqctl list_user_permissions guest# 由于RabbitMQ默認(rèn)的賬號用戶名和密碼都是guest。為了安全起見, 先刪掉默認(rèn)用戶rabbitmqctl delete_user guest# 添加新用戶rabbitmqctl add_user username password# 設(shè)置用戶tagrabbitmqctl set_user_tags username administrator# 賦予用戶默認(rèn)vhost的全部操作權(quán)限rabbitmqctl set_permissions -p / username ".*" ".*" ".*"# 查看用戶的權(quán)限rabbitmqctl list_user_permissions username
rabbitmq-plugins enable rabbitmq_management
整合RabbitMq
導(dǎo)入Maven依賴
<parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.1.4.RELEASEversion><relativePath/>parent><properties><java.version>1.8java.version>properties><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-amqpartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency>dependencies>
spring.application.name=springboot-rabbitmqspring.rabbitmq.host=192.168.197.133spring.rabbitmq.port=5672spring.rabbitmq.username=rootspring.rabbitmq.password=123456spring.rabbitmq.publisher-confirms=truespring.rabbitmq.publisher-returns=truespring.rabbitmq.virtual-host=/
/*** @author SimpleWu* @Date 2019-05-17* 該類初始化隊列*/public class RabbitMqInitialization {/*** 創(chuàng)建隊列 隊列名字為SayQueue* @return*/public Queue SayQueue() {return new Queue("SayQueue");}}
/*** @author SimpleWu* @Date 2019-05-17* 生產(chǎn)者*/public class SayProducer {private RabbitTemplate rabbitTemplate;public void send(String name){String sendMsg = "hello: " + name + " " + new Date();//指定隊列this.rabbitTemplate.convertAndSend("SayQueue", sendMsg);}}
/*** @author SimpleWu* @Date 2019-05-17* 消費者* queues 指定監(jiān)聽的隊列*/(queues = "SayQueue")public class SayConsumer {public void process(String hello) {System.out.println("SayConsumer : " + hello);}}
public class SayController {private SayProducer sayProducer;public String send( String name){sayProducer.send(name);return "Send Succcess SimpleWu";}}
# 整合郵件發(fā)送
<dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-mailartifactId>dependency>
spring.mail.host 需要根據(jù)不同的郵箱類型配置不同的服務(wù)器地址 發(fā)送郵箱
/*** @author SimpleWu* @data 2019=05-17* 發(fā)送郵件*/public class EmailService {private JavaMailSender javaMailSender;public void sendSimpleMail(){MimeMessage message = null;try {message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom("[email protected]");helper.setTo("[email protected]");helper.setSubject("標(biāo)題:發(fā)送Html內(nèi)容");StringBuffer context = new StringBuffer();context.append(""
);context.append("Hello SpringBoot Email Start SimpleWu!!");context.append("");helper.setText(context.toString(),true);//設(shè)置true發(fā)送html郵件//帶附件//FileSystemResource fileSystemResource=new FileSystemResource(new File("D:\2019-05-07.pdf"));//helper.addAttachment("郵箱附件",fileSystemResource);javaMailSender.send(message);} catch (MessagingException e) {e.printStackTrace();}}}
題外話:推薦一個GitHub項目,這個 GitHub 整理了上百本常用技術(shù)PDF,絕大部分核心的技術(shù)書籍都可以在這里找到,GitHub地址:https://github.com/gsjqwyl/awesome-ebook(電腦打開體驗更好),地址閱讀原文直達(dá)。麻煩打個給個Star,持續(xù)更新中...
---END---
文末福利
評論
圖片
表情


