Spring Boot学习笔记
来源:互联网 发布:倍福plc编程语言 编辑:程序博客网 时间:2024/06/04 19:25
上一篇Maven学习笔记里完成了对maven的初步认识与环境配置后,接着探索Maven+Spring Boot搭建Web项目环境。
以下备忘录主要记录,在探索springboot使用方法的过程中遇到的重要问题。
- 零 环境搭建
- 创建项目
- 填写项目信息
- 完善pom及applicationproperties
- 一 关于注解
- 二 pom依赖的相关问题
- 三 路径问题
- 四 mybatis及mysql配置
- 添加spring boot的mysql支持到pom文件
- 添加spring boot的mybatis支持到pom
- 添加数据库信息
- 添加数据库操作的映射
零、 环境搭建
以eclipse为例:
1. 创建项目
导航栏空白处右键-〉new-〉maven project,勾选”create a simple project”,如下图:
2. 填写项目信息
红线处必填,完成后点击Finish。
3. 完善pom及application.properties
至此,项目结构如下图:
附上pom.xml内容以及application.properties内容:
POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ray</groupId> <artifactId>test</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>sboot Maven Webapp</name> <url>http://maven.apache.org</url> <properties> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> </parent> <dependencies> <!-- junit支持 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- springboot的junit依赖注入支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- web支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jdbc支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- tomcat支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- mysql支持 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- jsp支持 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <scope>provided</scope> </dependency> <!-- jstl标签库 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- mybatis支持 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> </dependencies> <build> <finalName>sboot</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source><!-- 使用1.8版本的jdk编译 --> <target>1.8</target> <encoding>utf-8</encoding><!--编码使用UTF8--> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
application.properties
server.port=9090server.address=127.0.0.1server.session.timeout=10server.tomcat.uri-encoding=UTF-8spring.datasource.url=jdbc:mysql://127.0.0.1:3306/lisanyspring.datasource.username=rootspring.datasource.password=123456
一、 关于注解
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件
@Component泛指组件。
这是网上对于这几个最常用的组件注解的解释,其实最关键的在于下面这种书写格式:
@Service(“UserService”)
这种书写格式使得此类的实例得以在spring框架里使用byName原则注册。
当spring框架遇到下面这种注解标注的字段时,就会使用依赖注入原则进行注入,不必写setter也可以:
@Resource(name="UserService")private UserService us;
这种手动指定注入关系的用法又引伸出了“自动装配”的概念。
也就是不手动命名组件,需要注入的地方使用@Autowired注解。如下两图之间的关系:
spring boot会根据名字和类型自动完成注入操作。但是,需要特别特别注意的一点是,有些组件需要显式指示springboot去扫描才会被加载,如图2中的mybatis数据库映射组件。指示方法是@MapperScan(“被扫描的包路径”),如下图:
另外,图1中的注解@RequestMapping(“/user”),@RequestMapping(“/login”),是映射了对于“/user”,“/login”命名空间的http请求。
举例来说,对于客户端发起的对于”http://IP/user/login/“的请求,首先会交给负责”/user”请求的UserService来处理,spring找到UserService的实例后,发现负责处理”/user/login”请求的是doLogin方法,最后交给doLogin来处理。
二、 pom依赖的相关问题
项目报错,无法识别HttpServletRequest等类,需要在POM中手动添加servlet如下依赖:
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
springboot对于junit单元测试的支持是spring-boot-starter-test,而不是spring-test,groupId是org.springframework.boot,而不是org.springframework。
单元测试支持添加如下依赖到POM文件中:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
对于1.4以后的版本,junit单元测试类名前增加两个注解(如下),即可实现SpringBoot依赖注入。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Main.class)//Main是Springboot程序的启动类
@SpringBootTest注解的使用这个问题,折磨我很久,我用1.5版本的spring boot,网上的很多资料都是过时API,主要是英文水平不行惹的祸。
单元测试类截图:
三、 路径问题
这个问题比较棘手,因为不太方便通过调试手段解决,但还是解决了。需要在此特别记录一下。
项目结构如下图:
在spring boot的配置文件中指定jsp目录:
controller中返回页面名字后,jsp页面是可以访问的(需要添加POM的web支持)。如下图:
但是!CSS样式表,js,图片等静态资源文件,按照传统的路径存放方式,也就是说
在spring boot创建的web程序中,静态资源和JSP同级目录下存放,在JSP中使用相对路径进行访问,是访问不到的!
会出现光秃秃的页面,察看页面源码发现所有链接的静态资源都是404找不到!
正解:
方案一:spring boot默认静态资源路径在以下地址:
src/main/resources
|—-/static
|—-/public
|—-/resources
|—-/META-INF/resources
静态资源存放在以上目录,相当于普通web项目的WEB-INF目录下,可以使用相对路径访问静态资源。如下图:
当然还有以下方案,但是还没试:
方案2、通过application.properties配置spring.resources.static-locations=classpath:/img/ 指定自定义静态文件的目录位置,,多个使用逗号分隔,springboot自动失效
方案3、创建StaticController类继承WebMvcConfigurerAdapter 重写addResourceHandlers 指定静态访问资源目录
参考资料:
http://www.jb51.net/article/118326.htm
四、 mybatis及mysql配置
参考如下:
http://blog.csdn.net/gebitan505/article/details/54929287
实际操作:
1. 添加spring boot的mysql支持到pom文件
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
2. 添加spring boot的mybatis支持到pom
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version></dependency>
3. 添加数据库信息
添加数据库信息及mybatis用到的数据库表实体类所在包的路径。到spring boot的application.properties配置文件(我用properties比较习惯,也可以是yaml文件)。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/lisanyspring.datasource.username=rootspring.datasource.password=123456
4. 添加数据库操作的映射
数据库操作的mapper,其中property指的是java实体类中字段的名字,column指的是该字段在数据库中对应的表的列名,javaType指的是该列的数据类型对应java语言中的什么数据类型,如下图:
至此,基本配置就完成了,可以使用run as Spring Boot App运行web程序了。
总结:遇到的主要问题大致都在这里了。想起来再补充吧。
- spring-boot学习笔记
- Spring Boot学习笔记
- Spring Boot学习笔记
- spring boot 学习笔记
- Spring Boot学习笔记
- Spring Boot学习笔记
- Spring Boot 学习笔记
- spring boot学习笔记
- Spring Boot 学习笔记
- Spring Boot 学习笔记(-)
- Spring Boot 学习笔记
- Spring Boot学习笔记
- Spring-boot学习笔记
- spring boot 学习笔记
- Spring Boot 学习笔记
- spring boot 学习笔记
- Spring Boot学习笔记
- spring boot 学习笔记
- 动态开辟二维数组
- 技术团队管理笔记(一)-识人
- 星期选择器
- Unity UGUI中RectTransfrom中锚点(Anchor)、中心(Pivot)、Rect及坐标分析
- 记一道USB流量分析CTF题
- Spring Boot学习笔记
- Winodws x64系统服务调用的那头4个参数
- 2017ACM-ICPC亚洲区域赛北京站 F.Secret Poems(模拟)
- Ubuntu安装scrapy
- Linux平台安装opencv3.1.0
- 如何在SpringBoot中监控执行引擎(actuator)?
- PHP邮件发送代码实现
- Leetcode 714
- Handler源码原理分析