SpringBoot详解

SpringBoot是什么?

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

特点:

1、SpringBoot属于敏捷开发框架,SpringBoot的web组件集成了SpringMVC,特别适合构建微服务系统,另外给我们封装了各种经常使用的套件,如mybatis、hibernate、redis、mongodb等。

2、无需tomcat(运用Java应用程序来运行,实际上就是个jar包,SpringBoot内嵌入有一个Tomcat)

3、减少XML配置(没有XML),用的是properties配置文件?简化 Maven 配置

4、SpringCloud+SpringBoot组合开发(SpringCloud用的是http协议+rest,SpringCloud它是基于SpringBoot的?)

5、SpringBoot是安全的、习惯优于配置

6、SpringBoot中的配置文件后缀名必须是.properties和YML

SpringBoot项目创建:

1、两大依赖

SpringBoot的父级依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
</parent>

SpringBoot的web组件

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、运行方法:

SpringBoot项目启动的入口是main方法,启动方式有两种

①、单独启动

在想要启动的controller类上面加上注解@EnableAutoConfiguration,然后在该类中编写一个main方法,在main方法中用SpringAppliction.run(当前类名.class, args),然后点击运行,即可访问该控制层中的服务(接口)

②、全部启动

创建一个单独的类,在该类上加上注解:@EnableAutoConfiguration,@ComponentScan;把@ComponentScanz扫描注解定义在要启动的控制层类的上一级目录,然后在该类中编写main方法运行,则该目录下的所有controller中的服务都可以访问

3、访问静态资源

SpringBoot框架中的static资源一般都是存放在src/main/resources目录下的,可以在该目下建一个static文件夹,用来存放静态资源(访问方法:127.0.0.1:8080/图片名称,注意:不需要文件夹名称)

4、模板引擎渲染页面

①、SpringBoot优先使用模板引擎,不建议使用jsp页面

模板引擎定义(动态页面静态化),动态的HTML格式,也成伪html,它可以提交搜索引擎,可以使用FreeMarker实现

5、FreeMarker简介:

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。


引入freemarker依赖:

<!-- 引入freeMarker的依赖包. -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>
注:freemarker默认访问路径:src\main\resources\templates,文件的后缀名是.ftl

6、SpringBoot整合JSP页面

项目必须创建war类型的不能是jar类型的,如果是jar类型则会一直报404,,找不到页面错误,需要引入jsp依赖

7、常用注解:

@RestController:

相当于@ResponseBody和@Controller的组合注解,使该控制层中的所有接口返回都是Json格式数据

@EnableAutoConfiguration:

作用在于让 Spring Boot   根据应用所声明的依赖来对 Spring 框架进行自动配置

@SpringBootAppliction:

是Spring Boot 项目的核心注解 主要目的是开启自动配置,是一个组合注解,主要组合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan

@ComponentScan:

扫包使其注解生效,扫描单独的包:@conponentscn(“com.itmayiedu.yml.controller”),扫描多个包:@ComponentScan(basePackages = { "com.itmayiedu.yml.controller",  "com.itmayiedu.yml.service"})

@Autowired:

按类型装配Bean,bean注入

@EnableJpaRepositories("com.itmayiedu.dao"):

链接JPA数据源时需要用其扫描Dao才能使其生效

@MapperScan(basePackages = "com.itmayiedu.user1", sqlSessionFactoryRef = "test1SqlSessionFactory"):

指定放在com.itmayiedu.user1下的DAO操作的表是user1,引用sqlsessionfacyory工厂

@ConfigurationProperties(prefix = "spring.datasource.test1"):

指定要读取的数据源

@Primary:

自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常,装配多个数据源时,需要其中一个加该注解,即默认优先使用该数据源

@Transactional:

可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。加该注解的方法如果报错,则事务回滚

@EnableConfigurationProperties(value = { DBConfig1.class, DBConfig2.class }):

即:启动时去加载dbconfig里面的信息(加在运行的main方法上)


@Async:

异步加载,启动main方法上需要加上@EnableAsync才能使其生效

8、全局捕获异常

概念定义:把整个站点,也就是整个网站,只要抛的异常,全部把它拦截下来,然后跳转的相对应的页面去,这就叫做全局捕获异常

实现方法:创建一个全局捕获异常类,在该类上加注解:@controllerAdvice;该注解为增强型控制器,然后在该类中创建捕获异常方法,在该方法上添加注解@ExceptionHandler(RuntumeException.class),方法体中,可以编写当网站报错是你想要展示的页面,当然如果你需要报错时展示Json格式数据,那么需要加上注解@responseBody注解,在SpringBoot中的全局捕获异常是使用了Spring中AOP的特性,使用切面调用切面中的异常通知来实现的


9、SpringBoot链接数据源

①、链接JDBC数据源

创建application.properties文件,文件中创建数据源链接

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

添加,sql语句格式:


②、整合mybatis数据源:


③、整合springjpa数据源

springjpa是什么?


它是对Hibernate的封装,描述表的映射关系,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术

创建实体:


DAO层需要继承JpaRepository接口:


使用jpa注解扫包:

@EnableJpaRepositories("com.itmayiedu.dao"):扫描dao使其生效


@EntityScan("com.itmayiedu.entity"):扫描实体类使其生效


10、整合多环境配置

配置环境简称:


在一个项目中,有多个数据源,多个JDBC链接

如何区分数据源:

①、分包方式:

配置数据源:


创建datasource类配置文:



11、SpringBoot整合事物

事物管理的分类:编程事物和声明事物(XML、注解方式)

在方法上加上@Transactional即可

多数据源事物管理(分布式事物管理):jta+autoCAD,把T1、T2和T3数据源交给第三方去管理(AutoCAD)---两段提交协议、2pc(常规项目)

12、SpringBoot整合redis

①、POM引入依赖:

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.7.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>RELEASE</version>
        </dependency>

②、redis的数据类型:

String类型:

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

命令:

SET name "runoob"          GET name

Hash类型:

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

每个 hash 可以存储 232 -1 键值对(40多亿)

命令:


list类型:

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

它的底层实际是个链表

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)

命令:


set类型:

无需不重复集合

Redis的Set是string类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

命令:sadd key member

zset类型:

有序不重复集合

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

命令:zadd key score member

③、redis怎么存放对象?

使用String类型,采用Json格式。将对象转换为json格式存放在redis中,从redis中获取json值,反序列化对象

13、SpringBoot项目打包

在pom中声明项目入口:


<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<maimClass>com.itmayiedu.app.App</maimClass>
					//指向主函数入口(main方法)
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>

			</plugin>
		</plugins>
	</build>

首先、先进入到控制台里面去


在进入targer目录,清空目录空间


在控制输入: MVN package   进行打包


测试打包的项目是否OK:

打开dom窗口,运行命令:java –jar 打包好的jar包名称

  • 16
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值