springbootvalue注解默认值_浅谈SpringBoot 学习主题:SpringBoot
1. Spring Boot整合Spring Data Redis-整合步骤
1. 阐述Spring Boot整合Spring Data Redis整合步骤。
创建项⽬,修改pom⽂件,配置全局配置⽂件,创建启动类
1. @Configuration注解的作⽤是什么?
表⽰将当前⽂件作为配置类
1. @Bean注解的作⽤是什么?
⽤于注⼊⽅法中的配置信息
1. Spring Boot整合Spring Data Redis-提取Redis的链接参数
1. @ConfigurationProperties注解的作⽤是什么?
@ConfigurationProperties:会将前缀相同的内容创建⼀个实体
1. @ConfigurationProperties注解中的prefix属性的作⽤是什么?
指定前缀内容
1. Spring Boot整合Spring Data Redis-存取Java对象
1. 创建Users实体对象,包含id、name、age、address属性。
public class Users implements Serializable{
private Integer id;
private String name;
private Integer age;
private String address;
}
1. 创建测试代码,在测试⽅法中重新设置序列化器,更换为jdk序列化器,
2. 并将Users对象缓存到Redis中。
3. 创建测试代码,获取缓存的Users对象。
/**
* 完成对Redis的整合的⼀些配置
*
* @author chy
*
*/
@Configuration
public class RedisConfig {
/**
* 1.创建JedisPoolConfig 对象。在该对象中完成⼀些链接池配置
* @ConfigurationProperties:会将前缀相同的内容创建⼀个实体。
*/
springboot框架的作用
@Bean
@ConfigurationProperties(prefix="dis.pool")
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig config = new JedisPoolConfig();
//最⼤空闲数
//config.setMaxIdle(10);
//config.setMaxIdle(10);
//最⼩空闲数
/
/config.setMinIdle(5);
//最⼤链接数
//config.setMaxTotal(20);
System.out.println("默认值:"+MaxIdle());
System.out.println("默认值:"+MinIdle());
System.out.println("默认值:"+MaxTotal());
return config;
}
/**
* 2.创建JedisConnectionFactory:配置redis链接信息
*/
@Bean
@ConfigurationProperties(prefix="dis")
public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){
System.out.println("配置完毕:"+MaxIdle());
System.out.println("配置完毕:"+MinIdle());
System.out.println("配置完毕:"+MaxTotal());
JedisConnectionFactory factory = new JedisConnectionFactory();
//关联链接池的配置对象
factory.setPoolConfig(config);
//配置链接Redis的信息
//主机地址
/
/factory.setHostName("192.168.179.131");
//端⼝
//factory.setPort(6379);
return factory;
}
/**
* 3.创建RedisTemplate:⽤于执⾏Redis操作的⽅法
*/
@Bean
public RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){  RedisTemplate<String, Object> template = new RedisTemplate<>();
//关联
template.setConnectionFactory(factory);
//为key设置序列化器
template.setKeySerializer(new StringRedisSerializer());
//为value设置序列化器
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=App.class)
public class TestRedis {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 插⼊⼀个字符串
*/
@Test
public void TestSet() {
}
/**
* 从redis中取值
*/
@Test
public void TestGet() {
String name = (String) disTemplate.opsForValue().get("name");
System.out.println(name);
}
/**
* 设置Users对象
*注意通过: JdkSerializationRedisSerializer序列化器所占内存较⼤
*/
@Test
public void TestObjectSet() {
Users users = new Users();
users.setId(1);
users.setName("乔鲁诺乔巴纳");
users.setAge(16);
users.setAddress("意⼤利罗马");
}
/**
* 获取Users对象
*注意通过: JdkSerializationRedisSerializer序列化器所占内存较⼤
*/
@Test
public void TestObjectGet() {
Users users = (Users) disTemplate.opsForValue().get("Users");
System.out.println(users);
}
/**
* 设置Users对象,通过Json序列化器
*占⽤内存较⼩
*/
@Test
public void TestObjectSetJson() {
Users users = new Users();
users.setId(1);
users.setName("乔鲁诺乔巴纳");
users.setAge(16);
users.setAddress("意⼤利罗马");
}
/**
* 获取Users对象,通过Json序列化器
*占⽤内存较⼩
*/
@Test
public void TestObjectGetJson() {
public void TestObjectGetJson() {
System.out.println(users);
}
}
Spring Boot定时任务-@Scheduled的使⽤
Scheduled是什么?
//不属于控制层、服务层、数据访问层。所以使⽤@Component
@Component
public class ScheduledDemo {
/**
* 每两秒打印⼀次时间
* cron="0/2 * * * * *"
*
* 每分钟的第⼆秒打印⼀次时间
* cron="2 * * * * *"
*/
@Scheduled(cron="0/2 * * * * ?")
public void doScheduled() {
System.out.println("定时器:"+new Date());
}
}
1. @Scheduled注解的作⽤是什么?
开启定时任务
1. @Scheduled的cron属性的作⽤是什么?
指定定时器规则
1. 什么是cron表达式?
Cron 表达式是⼀个字符串,分为6 或7 个域,每⼀个域代表⼀个含义
Cron 有如下两种语法格式:
(1) Seconds Minutes Hours Day Month Week Year
(2) Seconds Minutes Hours Day Month Week(推荐使⽤)
1. @EnableScheduling注解的作⽤是什么?
在开启启动类时,需要额外加@EnableScheduling注解
1. Spring Boot定时任务-cron表达式
1. Cron表达式的语法格式有⼏种?
2. Cron表达式的结构是什么样的?
3. Cron表达式各字段的含义是什么?
4. 在Cron表达式中(*)、(?)、(-)、(,)、(/)、(#)分别表⽰什么含义?
5. 在Cron表达式中L、W、LW、C分别表⽰什么含义?
1. Spring Boot定时任务-Quartz介绍
1. 什么是Quartz?
Quartz是OpenSymphony开源组织在Job scheduling领域⼜⼀个开源项⽬,它可以与J2EE与J2SE应⽤程序相结合也可以单独使⽤。Quartz可以⽤来创建简单或为运⾏⼗个,百个,甚⾄是好⼏万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。
1. Quartz的使⽤思路是什么?
创建定时任务,启动定时任务
1. Spring Boot定时任务-SpringBoot整合Quartz
1. 阐述Spring Boot整合Quartz整合步骤。
1.创建项⽬,导⼊依赖
2.修改全局配置⽂件
3.创建启动类
1. @EnableScheduling注解的作⽤是什么?
开启定时器
1. Spring Boot定时任务-Job类对象注⼊
1. 阐述Job类注⼊时⽣异常的原因。
在quartz中定时任务的创建时通过AdaptableJobFactory类中的createJobInstance⽅法创建,使⽤的是反射,没有使⽤spring,所以⽆法注⼊对象。
1. 如何解决该异常?
复写createJobInstance⽅法,将创建的定时任务加⼊到spring容器中。
1. AutowireCapableBeanFactory对象的作⽤是什么?
可以将⼀个对象添加到SpringIOC 容器中,并且完成该对象注⼊
1. 单体架构
1. 什么是单体架构?
单体架构也称之为单体系统或者是单体应⽤。就是⼀种把系统中所有的功能、模块耦合在⼀个应⽤中的架构⽅式。
1.
1. 单体架构有哪些特点?
打包成⼀个独⽴的单元 jar包或者 war包 ;会以进程的⽅式运⾏
1. 单体架构的优缺点是什么?
优点:项⽬易于管理、部署简单。
缺点:测试成本⾼、可伸缩性差、可靠性差、迭代困难、跨语⾔程度差、团队协作难
1. 微服务架构
1. 什么是微服务?
微服务就是⼀个轻量级的治理⽅案。
1. 常见的架构风格有哪些?
MVC、RPC、SOA、微服务架构