Spring Boot

Spring Boot

1.自动配置原理

启动类:
@SpringBootApplication
public class Application{
	public static void main(Sting[] args){
		SpringApplication.run(Application.class, args);
	}
}
①注解:
	@SpringBootApplication组合注解:
		@SpringBootConfiguration
		@EnableAutoConfiguration
		@ComponentScan
		解释:
		@SpringBootConfiguration:如果用了SpringBootApplication就会被spring当作一个配置类;
		@EnableAutoConfiguration:辨别标注了@Configuration注解的类,识别扫描到这些配置类;
		@ComponentScan:是一个组件扫描,扫描当前包及其子包里面使用了Spring注解的一些组件
②main方法:
	SpringApplication.run()方法,里面会有getSpringFactoriesInstances()方法,获取工厂实例
	->加载了工厂名称(loadFactoryNames)
	->spring.factories(定义了非常多的自动整合的类,组件:springMVC,redis,数据库的等)
	(@ConditionalOnClass/OnWebApplication条件注解,如果满足了就会实例化该类)

③如果需要修改组件配置
在这里插入图片描述

总结:
1.在'MEtA-INF\Spring.factories'文件中定义了很多自动配置类;
2.可以根据在pom.xml文件中添加的启动器依赖自动配置组件;
3.通过如下流程可以修改application配置文件,改变自动配置的组件默认参数:

2.Spring Boot整合SSM框架

①lombok应用
使用lombok的注解实现pojo类的简化
使用SpringBoot整合SSM工程;需要使用到数据库数据。
	*.将数据库表数据导入到数据库中(springboot_test);
	*.编写数据库表对应的实体类;一般情况下需要编写get/set/toString等方法会耗时并且会让实体类看起来比较臃肿。可以使用lombok插件对实体类进行简化。
lombok是一个插件工具类包,提供了一些注解@Data、@Getter等这些注解去简化实体类中的构造方法、get/set等方法的编写。
	1.在IDEA中安装lombok插件;
	2.添加lombok对应的依赖到项目pom.xml文件;
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>
3.改造实体类使用lombok注解。
	在编译阶段会根据注解自动生成对应的方法
	实体类注解:
		@Data(get、set、hashCode、equals、toString等方法)
		@Getter(自动提供getter方法)
		@Setter(自动提供setter方法)
		@NoArgsConstructor(为类提供一个无参的构造方法)
		@AllArgsConstructor(为类提供一个全参的构造方法)
		@Slfj(自动在bean中提供log变量,其实用的是slf4j的日志功能)等
②Spring Boot整合-SpringMVC端口和静态资源
1.修改tomcat端口
	查询***.Properties,设置配置项(前缀名+类变量名)到application配置文件中。
	autoconfigure:2.1.5.RELEASE->web->ServerProperties(前缀server)
2.访问项目中的静态资源
	静态资源放置的位置;放置静态资源并访问这些资源。
	autoconfigure:2.1.5.RELEASE->web->ResourProperties(classPath:/META-INF/resources/;
													   classPath:/resources/;
													   classPath:/static/;
													   classPath:/public/)
③Spring Boot 整合-springMVC拦截器
可以把Spring Boot项目中配置自定义SpringMVC拦截器
	1.编写拦截器(实现一个接口HandlerIntercepter);
	2.编写配置类实现WebMvcConfigurer,在该类中添加各种组件;
④Spring Boot整合-事务和连接池
配置Spring Boot自带默认的hikari数据库连接池和使用@Transactional注解进行事务配置
*.事务配置
	1.添加事务相关的启动器依赖,mysql相关依赖;
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-conector-java</artifactId>
	<version>5.1.46</version>
</dependency>	
	2.编写业务类UserService使用事务注解@Transactional
*.数据库连接池hikari配置
	因为是自带默认的,所以只需要在application配置文件中指定数据库相关参数
⑤Spring Boot整合-Mybatis
配置Mybatis在Spring Boot工程中的整合包,设置Mybatis的实体类别名,输出执行sql语句配置项
1.添加启动器依赖;
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-nppt-starter</artifactId>
	<version>2.0.1</version>
</dependency>
2.配置Mybatis:实体类别名包,日志,映射文件等;
#实体类别名包路径
Mybatis.type-aliases-package:cn.yang.pojo
#映射文件路径
Mybatis.mapper-locations:classpath:mappers/*.xml
Mybatis.configuration.log-impl:org.apache.ibatis.logging.stdout.StdOutImpl
3.配置MapperScan
		@SpringBootApplication
		//扫描mybatis所有业务mapper接口
		@MapperScan("cn.yang.mapper")
		public class Application{
			public static void main(Sting[] args){
				SpringApplication.run(Application.class, args);
			}
		}
⑥Spring Boot整合-通用Mapper
配置通用Mapper组件到Spring Boot项目中并使用Mapper<T>接口
	通用Mapper:可以实现自动拼接sql语句;所有mapper都不需要编写任何方法也就是不用编写sql语句。可以提高开发效率。
		1.添加启动器依赖;
<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper-spring-boot-starter</artifactId>
	<version>2.1.5</version>
</dependency>
		2.改造UserMapper继承Mapper<User>;
			extends Mapper<User>
		3.修改启动引导类Application中的Mapper扫描注解;
@SpringBootApplication
//扫描mybatis所有业务mapper接口
@MapperScan("cn.yang.mapper") //import tk.mybatis.spring.annotation.MapperScan
public class Application{
	public static void main(Sting[] args){
		SpringApplication.run(Application.class, args);
	}
}
	4.修改User实体类添加jpa注解;
		@Table(name = "tb_user")
			@Id
			@KeySql(useGeneratedKeys = true) //主键回填
			@Colum(name = "abc") //不符合的驼峰的加
	5.改造UserService实现业务功能;
//UserService:
			@Autowired
			private UserMapper userMapper;
			//根据id查询
			punlic User queryById(Long id){
				return userMapper.selectByPrimaryKey(id);
			}
			//新增保存用户
			public void saveUser(User user){
				//选择性新增,如果属性为空则该属性不会出现在insert语句中
				userMapper.insertSelective(user);                                                              
			}
⑦Spring Boot整合-Junit
在Spring Boot项目中使用Junit进行单元测试UserService的方法
	1.添加启动器依赖;spring-boot-starter-test
	2.编写测试类
⑧Spring Boot整合-redis
在Spring Boot项目中使用Junit测试Redis Template的使用
		1.添加启动器依赖;spring-boot-starter-data-redis
		2.配置application.yml中修改redis的连接参数;(redis需要启动)
			#修改主机地址
			spring.redis.host:localhost
			spring.redis.port:6379
		3.编写测试类应用RedisTemplate操作redis中的五种数据类型(String\hash\set\list\sorted set)
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest{
	@Autowired
	private RedisTemplate redisTemplate;
	public void test(){
		//string 字符串
		//redisTemplate.opsForValue().set("str","baba"); 
		redisTemplate.boundValueOps("str").set("baba");
		System.out.println("str = " + redisTemplate.opsForValue.get("str"));
		//hash 散列
		redisTemplate.boundHashOps("h_key").put("name","baba");			
		redisTemplate.boundHashOps("h_key").put("age","18");
			//获取所有域
		Set set = redisTemplate.boundHashOps("h_key").keys();
		System.out.println("hash散列的所有域:" + set);
			//获取所有值
		List list = redisTemplate.boundHashOps("h_key").values();
		//list列表
		redisTemplate.boundListOps("l_key").leftPush("c");
		redisTemplate.boundListOps("l_key").leftPush("b");
		redisTemplate.boundListOps("l_key").leftPush("a");
		list = redisTemplate.boundListOps("l_key").range(0,-1);
		System.out.println("list列表中所有的元素 : " + list)
		//set 集合
		redisTemplate.boundSetOps("s_key").add("a","b","c");
		set = redisTemplate.boundSetOps("s_key").members();
		System.out.println("set集合中的所有元素 : " + set)
		//sorted set集合
		redisTemplate.boundZSetOps("z_key").add("a","30");
		redisTemplate.boundZSetOps("z_key").add("b","20");
		redisTemplate.boundZSetOps("z_key").add("c","10");
		set = redisTemplate.boundZSetOps("z_key").range(0,-1);
		System.out.println("zset有序集合中所有元素 :" + set);
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值