Spring总结

一、Spring 常用框架

Spring MVC及与structs MVC对比

https://www.cnblogs.com/amunamuna/p/6207485.html

spring配置jackson (Java Json解析器

https://www.cnblogs.com/amunamuna/p/9636229.html

Spring整合Hibernate

https://www.cnblogs.com/amunamuna/p/6509249.html

二、概念

1、Spring中AOP与IOC概念

IOC:控制反转,是一种设计模式。一层含义是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入(DI):将相互依赖的对象分离,在spring配置文件中或用注解的方式来描述他们的依赖关系。他们的依赖关系只在使用的时候才建立。简单来说就是不需要NEW一个对象了。

AOP:面向切面,是一种编程思想,OOP的延续。将系统中非核心的业务提取出来,进行单独处理。比如事务、日志和安全等。这个简单来说就是可以在一段程序之前或者之后做一些事。

Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题。使代码重用度高、易于维护。
不过AOP和IOC并不是spring中特有的,只是spring把他们应用的更灵活方便

2、Spring框架中Bean的作用域

https://www.cnblogs.com/amunamuna/p/10959796.html

三、注解

1、@Controller、@Service、@Repository、@Component

@Controller用于注解控制层组件(如action)

@Service用于注解业务层组件(我们通常定义的service层就用这个)

@Repository用于注解数据访问组件,即DAO组件

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行注解。

@RestController 是一个组合注解,组合了@Controller和@ResponseBody。

Tip:

2、@Autowired 和@Resource

  1. @Autowired 和@Resource这两个注解区别。
  • @Autowired与@Resource都可以用来装配bean。

  • @Resource是java提供的,默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入;而@Autowired是Spring提供的,默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用。

  • 在使用Spring构架中的@Autowired标签时默认情况下使用@Autowired注释进行自动注入时,Spring容器中匹配的候选bean数目必须有且仅有一个。

我们可以通过@Qualifier注释指定注入Bean的名称,和@Autowired配合使用,这时自动注入的策略就从byType转变成byName了。

例子如下:
@Autowired
@Qualifier("userServiceImpl")
publicI UserService userService;

@Qualifier作用:当一个接口有多个实现类时,调用代码只用@Autowired,启动tomcat会提示有多个实现类,Spring不知道应该绑定哪个实现类。

这时候将@Qualifier("service")和@Autowired配合使用,它会通过这个标示,表明哪个实现类才是我们所需要的。需要注意的是@Qualifier的参数名称必须为我们之前定义的@Service或@Repository注解的名称之一。

  • @Autowired可以对成员变量、方法以及构造函数进行注释,而@Qualifier的标注对象是成员变量、方法入参、构造函数入参。

  • 当属性加上@Autowired后不需要getter()和setter()方法,Spring会自动注入。

3、详解@Transactional

https://www.cnblogs.com/amunamuna/p/10095642.html

4、@Cacheable

可以用在方法或者类级别。当他应用于方法级别的时候,缓存返回值。当应用在类级别的时候,这个类的所有方法的返回值都将被缓存。

@Cacheable注解有三个参数:value(必须的)、key(可选)和condition(可选)。

value指明了缓存将被存到什么地方。

任何存储在缓存中的数据为了高速访问都需要一个key。spring默认使用被@Cacheable注解的方法的签名来作为key,当然你可以重写key,自定义key可以使用SpEL表达式。

condition(可选),同样的,也是引用一个SpEL表达式。但是这个参数将指明方法的返回结果是否被缓存。

总结:当执行到一个被@Cacheable注解的方法时,Spring首先检查condition条件是否满足,如果不满足,执行方法,返回;如果满足,在value所命令的缓存空间中查找使用key存储的对象,如果找到,将找到的结果返回,如果没有找到执行方法,将方法的返回值以key-对象的方式存入value缓存中,然后方法返回。

@CacheEvict 清除缓存

@ExceptionHandler捕捉异常,进行统一处理

5、@NotNull和@NotEmpty和@NotBlank区别

  1. @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0

    ("test")    即:必须有实际字符
    
  2. @NotNull:作用在基本类型上。不能为null,但可以为empty,没有size的约束

    (""," ","   ")      
    
  3. @NotEmpty:作用在集合类上面。不能为null,而且size>0

    (" ","  ")
    

四、spring security梳理

https://www.cnblogs.com/amunamuna/p/9578679.html

原文地址:https://www.cnblogs.com/amunamuna/p/10959835.html