Springboot项⽬开发总结
spring boot简介
Spring Boot是由Pivotal团队提供的全新框架,其设计⽬的是⽤来简化新Spring应⽤的初始搭建以及开发过程。该框架使⽤了特定的⽅式来进⾏配置,从⽽使开发⼈员不再需要定义样板化的配置。
其特点在spring web项⽬配置⽅⾯做了很⼤简化:
如之前:
1)配置l,加载spring和spring mvc
2)配置数据库连接、配置spring事务
3)配置加载配置⽂件的读取,开启注解
4)配置⽇志⽂件
5 )配置完成搭建tomcat进⾏服务部署
⽽springboot将各项配置集成起来。对于项⽬针对性的配置在application.properties⽂件声明。springboot在启动时⾃动加载各项配置信息
springboot内嵌tomcat只需要java -jar 启动jar包 即可将项⽬装载到tomcat java -jar app.jar –spring.profiles.active=dev (可指定读取环境配置)
启动⼊⼝;Application.java (注解:@SpringBootApplication)
基础springboot依赖(包含项⽬基本的⼀些jar 包依赖)
spring-boot-starter :核⼼模块,包括⾃动配置⽀持、⽇志和YAML;
spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito。
项⽬建⽴结构
controller:页⾯访问控制
service:业务类代码
domain:主要放些实体信息
web开发
json接⼝开发: 页⾯访问类添加 @RestController 即可,默认类中的⽅法都会以json的格式返回。
⾃定义property:⼀般配置⽂件在application.properties中,项⽬启动时⾃动加载。通过 @Value(“${itle}”)属性获取对应值 log配置:可在application.properties 中(springboot集成了logback相应jar 包)
logging.path=/user/local/log
logging.level.favorites=DEBUG
springframework.web=INFO
hibernate=ERROR
注:⼀般情况集中logback 定义l中配置对应输出路径及等级
数据库:添加对应jar包 如mysql
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-`connector`-java</artifactId>
</dependency>
对应数据库加载信息配置。添加application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.sql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
mybatis-spring-boot-starter
在启动类中添加对mapper包扫描@MapperScan。
1.⽆xml配置版
public interface UserMapper {
@Select("SELECT * FROM users")
@Results({
@Result(property = "userSex", column = "user_sex", javaType = UserSexEnum.class),
jpa mybatis@Result(property = "nickName", column = "nick_name")
})
List<UserEntity> getAll();
* @Select 是查询类的注解,所有的查询均使⽤这个
* @Result 修饰返回的结果集,关联实体类属性和数据库字段⼀⼀对应,如果实体类属性和数据库属性名保持⼀致,就不需要这个属性来修饰。
* @Insert 插⼊数据库使⽤,直接传⼊实体类会⾃动解析属性到对应的值
* @Update 负责修改,也可以直接传⼊对象
*@delete 负责删除
2.有xml配置版本
application.properties新增以下配置。
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis基础配置⽂件和实体类映射⽂件的地址。
<typeAlias alias="LinkedList"type="java.util.LinkedList" />
<mapper namespace="apper.UserMapper" >
<resultMap id="BaseResultMap"type="ity.UserEntity" >
<id column="id"property="id"jdbcType="BIGINT" />
</resultMap>
<delete id="delete"parameterType="java.lang.Long" >
DELETE FROM
users
WHERE
id =#{id}
</delete>
public interface UserMapper {
void delete(Long id);
}
注解模式:适合简单快捷的迭代,⽐较适应现在的微服务,多表连接的需求低。⼀般只针对⼀个库和表
传统配置模式:可以灵活动态的⽣成SQL⽅便sql调整。但是编写时⼿⼯维护成本多。
集成redis
1.引⼊ spring-boot-starter-redis
2. 添加配置⽂件# Redis服务器地址
3.添加cache的配置类
页⾯集成Thymeleaf
Thymeleaf是⼀款⽤于渲染XML/XHTML/HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进⾏集成作为Web应⽤的模板引擎。与其它模板引擎相⽐,Thymeleaf最⼤的特点是能够直接在浏览器中打开并正确显⽰模板页⾯,⽽不需要启动整个Web应⽤。
RabbitMQ介绍
RabbitMQ是实现AMQP(⾼级消息队列协议)的消息中间件的⼀种,最初起源于⾦融系统,⽤于在分布式系统中存储转发消息,在易⽤性、扩展性、⾼可⽤性等⽅⾯表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦⽽实现的。当⽣产者⼤量产⽣数据时,消费者⽆法快速消费,那么需要⼀个中间层。保存这个数据。
AMQP,即Advanced Message Queuing Protocol,⾼级消息队列协议,是应⽤层协议的⼀个开放标准,为⾯向消息的中间件设计。消息中间件主要⽤于组件之间的解耦,消息的发送者⽆需知道消息使⽤者的存在,反之亦然。AMQP的主要特征是⾯向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
* 左侧 P 代表⽣产者,也就是往 RabbitMQ 发消息的程序。
* 中间即是 RabbitMQ,其中包括了交换机和队列。消息到交换机(exchange)的时候,交换机会转发到对应的队列中,那么究竟转发到哪个队列(queue),就要根据该路由键(code)
* 右侧C代表消费者,也就是往 RabbitMQ 拿消息的程序。
Broker:简单来说就是消息队列服务器实体。
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息队列载体,每个消息都会被投⼊到⼀个或多个队列。
Binding:绑定,它的作⽤就是把exchange和queue按照路由规则绑定起来。
Routing Key:路由关键字,exchange根据这个关键字进⾏消息投递。
vhost:虚拟主机,⼀个broker⾥可以开设多个vhost,⽤作不同⽤户的权限分离。
producer:消息⽣产者,就是投递消息的程序。
consumer:消息消费者,就是接受消息的程序。
channel:消息通道,在客户端的每个连接⾥,可建⽴多个channel,每个channel代表⼀个会话任务
。
详细请查阅⽹上资源⽂档
1、配置pom包,主要是添加spring-boot-starter-amqp的⽀持
org.springframework.boot
spring-boot-starter-amqp
2、配置⽂件
配置rabbitmq的安装地址、端⼝以及账户信息
spring.application.name=spirng-boot-rabbitmq
spring.rabbitmq.host=192.168.0.86
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
3、队列配置
@Bean
public Queue Queue() {
return new Queue("hello");
}
}
3、发送者
rabbitTemplate是springboot 提供的默认实现
public class HelloSender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String context = "hello " + new Date();
System.out.println("Sender : " + context);
vertAndSend("hello", context);
}
}
4、接收者
@Component @RabbitListener(queues = “hello”) public class HelloReceiver {
@RabbitHandler
public void process(String hello) {
System.out.println("Receiver : " + hello);
} }
其他列⼦:⼀对多(多个订阅者),多对多模式
定时任务
1.pom包⾥⾯只需要引⼊springboot starter包即可。
org.springframework.boot
spring-boot-devtools
true
1. 启动类上⾯加上@EnableScheduling即可开启定时
2. 定时任务 每6秒执⾏⼀次
private int count=0;
@Scheduled(cron="*/6 * * * * ?")
private void process(){
System.out.println("this is scheduler task runing "+(count++));
}
}
@Component
public class Scheduler2Task {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 6000)
public void reportCurrentTime() {
System.out.println("现在时间:" + dateFormat.format(new Date()));
}
}
@Scheduled 参数可以接受两种定时的设置,⼀种是我们常⽤的cron=”/6 * * * ?”,⼀种是 fixedRate = 6000,两种都表⽰每隔六秒打印⼀下内容。
fixedRate 说明
* @Scheduled(fixedRate = 6000) :上⼀次开始执⾏时间点之后6秒再执⾏;
* @Scheduled(fixedDelay = 6000) :上⼀次执⾏完毕时间点之后6秒再执⾏;
@Scheduled(initialDelay=1000, fixedRate=6000) :第⼀次延迟1秒后执⾏,之后按fixedRate的规则每6秒执⾏⼀次。
邮件服务
1、pom包配置
pom包⾥⾯添加spring-boot-starter-mail包引⽤
org.springframework.boot
spring-boot-starter-mail
2、在application.properties中添加邮箱配置
spring.mail.host=smtp.qiye.163 //邮箱服务器地址
spring.mail.username=xxx@oo //⽤户名
spring.mail.password=xxyyooo //密码
spring.mail.default-encoding=UTF-8
mail.fromMail.addr=xxx@oo //以谁来发送邮件
3、编写mailService,这⾥只提出实现类。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论