基础概念2

swagger的用法  后面写到。

springmvc的使用(http协议的理解)
@ModelAttribute  对象填充
@RequestParam     form表单 key/value
@PathVariable   取Url中参数  /ab/{id}
@RequestBody    取数据中的json等通过流读取
@RequestHeader  消息头

try catch的使用 只对可能有异常的代码做捕获【建议有一个统一的全局捕获】

懒加载的解决【建议用lazy,把不需要的信息设置为空】
【fetch=FetchType.LAZY和EAGER的区分,eager会多发几条sql,lazy会在转json时候报错(session关闭时报错,不然也是多查)】

jpa的用法(hibernate的优化)  多对一,一对多等【通过以上懒加载建议,取关联数据时灵活使用left join fetch强制去取lazy对象】

如何加事物【在方法上加事务,①查询不需要事务②如果在查询方法中加上事务然后又有set值的情况,偶尔会自动update查询的实体】

如何实现异步【@async实现的一步调用,类本身调用是顺序执行的(具体使用参见文档)】

redis的使用【fingerprint:task:${id}:info 使用冒号格式做redis命名,在可视化工具中就是文件夹一层层的,方便归类和查看】

如何做共享式缓存(超时)【Spring中缓存artifactId为spring-boot-starter-cache,在CacheManager 添加一个 RedisCacheManager指定cahe缓存为redis】

	@Bean
	public CacheManager cacheManager(StringRedisTemplate redisCacheTemplate) {
		return new RedisCacheManager(redisCacheTemplate);
	}
使用swagger、springboot、负载均衡、发现服务、缓存
@EnableSwagger2
@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
@EnableCaching
public class SystemApp {
    
    private static ConfigurableApplicationContext ctx;
    
    public static void main(String[] args) {
        ctx = SpringApplication.run(SystemApp.class, args);  
    }		
    }

缓存和数据库配合用法
@Service
@CacheConfig(cacheNames="system:apps")
public class AppServiceImpl implements AppService {
	
	@Autowired
	private JpaTemplate jpaTemplate;

	@Cacheable(key="'system:apps:' + #key")
	@Override
	public SysApp getByKey(String key) {
		String sql = "from SysApp a where a.key = ?0";
		return jpaTemplate.findOne(sql, key);
	}

       @CacheEvict(key="'system:apps:' + #key")
    @Transactional
    @Override
    public void delete(Long id, String key) {
        SysApp temp = getById(id);
        if(temp != null) {
            jpaTemplate.delete(temp);
        }
    }



你可能感兴趣的:(基础概念2)