Spring - 6 模板物件 & RedisTemplate
阿新 • • 發佈:2020-12-08
Spring - 6 模板物件
3.1)Spring模組物件
-
TransactionTemplate
-
JdbcTemplate
-
RedisTemplate
-
RabbitTemplate
-
JmsTemplate
-
HibernateTemplate
-
RestTemplate
3.2)JdbcTemplate(瞭解)
提供標準的sql語句操作API
public void save(Account account) { String sql = "insert into account(name,money)values(?,?)"; jdbcTemplate.update(sql,account.getName(),account.getMoney()); }
3.3)NamedParameterJdbcTemplate(瞭解)
提供標準的具名sql語句操作API
public void save(Account account) { String sql = "insert into account(name,money)values(:name,:money)"; Map pm = new HashMap(); pm.put("name",account.getName()); pm.put("money",account.getMoney()); jdbcTemplate.update(sql,pm); }
3.4)RedisTemplate
RedisTemplate物件結構
public void changeMoney(Integer id, Double money) { redisTemplate.opsForValue().set("account:id:"+id,money); } public Double findMondyById(Integer id) { Object money = redisTemplate.opsForValue().get("account:id:" + id); return new Double(money.toString()); } // 配置類 RedisConfig @PropertySource("redis.properties") public class RedisConfig { @Value("${redis.host}") private String hostName; @Value("${redis.port}") private Integer port; // @Value("${redis.password}") // private String password; @Value("${redis.maxActive}") private Integer maxActive; @Value("${redis.minIdle}") private Integer minIdle; @Value("${redis.maxIdle}") private Integer maxIdle; @Value("${redis.maxWait}") private Integer maxWait; @Bean //配置RedisTemplate public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory){ //1.建立物件 RedisTemplate redisTemplate = new RedisTemplate(); //2.設定連線工廠 redisTemplate.setConnectionFactory(redisConnectionFactory); //3.設定redis生成的key的序列化器,對key編碼進行處理 RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); //4.返回 return redisTemplate; } @Bean //配置Redis連線工廠 public RedisConnectionFactory createRedisConnectionFactory(RedisStandaloneConfiguration redisStandaloneConfiguration,GenericObjectPoolConfig genericObjectPoolConfig){ //1.建立配置構建器,它是基於池的思想管理Jedis連線的 JedisClientConfiguration.JedisPoolingClientConfigurationBuilder builder = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder(); //2.設定池的配置資訊物件 builder.poolConfig(genericObjectPoolConfig); //3.建立Jedis連線工廠 JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration,builder.build()); //4.返回 return jedisConnectionFactory; } @Bean //配置spring提供的Redis連線池資訊 public GenericObjectPoolConfig createGenericObjectPoolConfig(){ //1.建立Jedis連線池的配置物件 GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig(); //2.設定連線池資訊 genericObjectPoolConfig.setMaxTotal(maxActive); genericObjectPoolConfig.setMinIdle(minIdle); genericObjectPoolConfig.setMaxIdle(maxIdle); genericObjectPoolConfig.setMaxWaitMillis(maxWait); //3.返回 return genericObjectPoolConfig; } @Bean //配置Redis標準連線配置物件 public RedisStandaloneConfiguration createRedisStandaloneConfiguration(){ //1.建立Redis伺服器配置資訊物件 RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); //2.設定Redis伺服器地址,埠和密碼(如果有密碼的話) redisStandaloneConfiguration.setHostName(hostName); redisStandaloneConfiguration.setPort(port); // redisStandaloneConfiguration.setPassword(RedisPassword.of(password)); //3.返回 return redisStandaloneConfiguration; } } // AccountServiceImpl實現類 @Service("accountService") public class AccountServiceImpl implements AccountService { @Autowired private RedisTemplate redisTemplate; public void save(Account account) { } public void changeMoney(Integer id, Double money) { //等同於redis中set account:id:1 100 redisTemplate.opsForValue().set("account:id:"+id,money); } public Double findMondyById(Integer id) { //等同於redis中get account:id:1 Object money = redisTemplate.opsForValue().get("account:id:" + id); return new Double(money.toString()); } } // 測試類 public class App { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.40.130",6378); jedis.set("name","itheima"); jedis.close(); } }