本文共 6374 字,大约阅读时间需要 21 分钟。
目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐。而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了大众的青睐。
而本文,我将教大家如何在 intellij idea 中快速构建好一个 Maven + Spring + SpringMVC + MyBatis + SpringBoot 的框架,做到了足够精简,让你可以立刻开始你的 web 项目。
一. 创建项目选择 Spring Initiallizr
添加最基本的几个依赖 Web,MySQL,MyBatis,其他需求可以后续再添加 ; 数据库选择了 MySQL
数据源中存储了所有建立数据库连接的信息
输入地址,端口,用户名,密码等等完成设置
application.properties 文件添加:
spring.datasource.url = jdbc:mysql://xx.xx.xx.x:xxx/xxx?characterEncoding=utf8&allowMultiQueries=true&useSSL=falsespring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driver-class-name = com.mysql.jdbc.Driver
url : 数据源 url ,格式为 jdbc:mysql://Host(主机名或 IP 地址):Post(端口)/Database(数据库名称),其中 allowMultiQueries = true : 允许多条 sql 同时执行(分号分隔);useSSL : 是否进行 SSL 连接,根据实际情况选择
username : 用户名
password : 密码
driver-class-name : 驱动名,不同的数据库有不同的 Drivername,如 oracle 数据库的 oracle.jdbc.driver.OracleDriver,MySQL 数据库为 com.mysql.jdbc.Driver
三. Spring 注解
使用 @Controller / @RestController 注解标注一个控制器,表明这个类是作为控制器的角色而存在的
使用 @Service 注解标注一个业务层类
使用 @Repository 注解标注一个持久层 mapper 接口
使用 @Component 注解标注其他组件
使用 @Configuration 注解标注配置类
四. MyBatis
整个项目的构建最主要的部分就是 springboot 和 mybatis 的整合,而 springboot 也提供了十分方便的方式。
声明为映射文件
namespace : 指该映射文件对应的映射接口 ; 一般来说,一个 XML 映射配置文件对应一个命名空间,而这个命名空间又对应一个接 口
Mybatis 配置,指定了 mybatis 基础配置文件和实体类映射文件的地址
mybatis.mapperLocations = classpath:mapper/**/*.xmlmybatis.typeAliasesPackage = com.swit.model
配置 typeAliasesPackage 可以使得 com.swit.model 包内的实体类可以在映射文件中使用别名,如:
如没有配置 typeAliasesPackage ,则需要 resultType="com.swit.model.User"
如果要对 MyBatis 通过 xml 文件进行另外的配置,则添加文件路径:
mybatis.config-locations=classpath:mybatis/mybatis-config.xml
以下两种方法二选其一
(1)可以选择在启动类添加 @MapperScan
value 为 mapper 类所在的包(注意这里是包的路径,而不是类的路径!)
@MapperScan(value = "com.swit.dao")
另外, @MapperScan 注解面向的是接口类,只要是加了注解的接口类都需要进行通过该注解来扫描
(2)可以在每个 mapper 类上添加 @mapper 注解
@Mapper@Repositorypublic interface MyMapper {}
到目前为止,你已经完成了你的项目的构建,下面我还会介绍些别的东西。
五. 其他要注意的点
这个注解位于启动类
@SpringBootApplication 等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan, 所以启动类无需再添加这三个注解
@Configuration :标注一个类为配置类。
@EnableAutoConfiguration :开启自动配置。
@ComponentScan :自动收集所有的 Spring 组件
如果你想把自己的 SpringBoot 项目部署到阿里云,腾讯云等服务器,那么你还需要加点东西。
如果需要通过打包的方式在web容器中进行部署,则需要继承 SpringBootServletInitializer 覆盖configure(SpringApplicationBuilder)方法
public class SpringbootApplication extends SpringBootServletInitializer {public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(SpringbootApplication.class);} }
2.pom 文件添加打包插件
projectName org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-compiler-plugin 3.1 1.8 1.8 true
@Componentpublic class CorsFilter implements Filter { /** * json web token 在请求头的名字 */ private String tokenHeader = "X_Auth_Token"; @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; HttpServletRequest request = (HttpServletRequest) req; String token = request.getHeader("X_Auth_Token"); System.out.println(token + "token"); String Origin = request.getHeader("Origin"); System.out.println("Origin:" + Origin); System.out.println("tokenHeader:" + this.tokenHeader); Logger logger = Logger.getLogger(this.getClass()); logger.info("Origin: " + Origin); response.setHeader("Access-Control-Allow-Origin", Origin); response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, " + this.tokenHeader); response.setHeader("Access-Control-Allow-Credentials", "true"); chain.doFilter(req, res); } @Override public void init(FilterConfig filterConfig) { } @Override public void destroy() { }}
六. 整合其他组件
redis 也是我们项目中经常用到的 NoSQL,经常用来做做缓存什么的。
依赖
org.springframework.boot spring-boot-starter-data-redis
application.properties
# Redis数据库索引(默认为0)spring.redis.database=0# Redis服务器地址spring.redis.host=127.0.0.1# Redis服务器连接端口spring.redis.port=6379# Redis服务器连接密码(默认为空)spring.redis.password=123456# 连接池最大连接数(使用负值表示没有限制)spring.redis.pool.max-active=15# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.pool.max-wait=-1# 连接池中的最大空闲连接spring.redis.pool.max-idle=15# 连接池中的最小空闲连接spring.redis.pool.min-idle=0# 连接超时时间(毫秒)spring.redis.timeout=0
针对监控而生的 DB 连接池
依赖
com.alibaba druid 1.0.20
application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.filters=statspring.datasource.maxActive=20spring.datasource.initialSize=5spring.datasource.maxWait=60000spring.datasource.minIdle=1spring.datasource.timeBetweenEvictionRunsMillis=60000spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=select 'x'spring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=falsespring.datasource.poolPreparedStatements=truespring.datasource.maxOpenPreparedStatements=20
感兴趣可以加Java架构师群获取Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限 都是大牛带飞 让你少走很多的弯路的 群..号是:855801563 对了 小白勿进 最好是有开发经验
注:加群要求
1、具有工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。
2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。
3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。
4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。
5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!
转载于:https://blog.51cto.com/13981400/2324436