在 ssm框架中有大量的配置文件如spring-mvc.xml,web.xml等。但是在spring boot 中 只有 .properties或 .yam的配置文件,进行一些如数据库连接,邮件发送等常量的属性的配置(数据库用户名,密码,数据库名称等待)。
在ssm框架中 配置文件主要是为了实现应用的解耦。实现一次配置多次使用。而在spring boot中没有spring-mvc.xml,web.xml等配置文件。而是使用注解的方式来实现。把应用和配置让应用和配置紧密相关。
@RestController
是@Controller和@ResponseBody的组合,一个顶两个
@GetMapping("XXX")
是@RequestMapping(method=RequestMethod.GET)的缩写,用来处理get请求
@Modifying
修改条目的时候会有用
@Query(XXX)/@Query(value="XXX")
使用HQL语句或SQL语句自定义查询,而非Spring Data解析方法名的方式查询。
@RunWith(XXX)
指定测试支持
@WebAppConfiguration
测试Web项目时使用,添加ServletContext域对象
@PersistenceContext
同 @Autowired,不同点在于,@PersistenceContext可以装配不同数据库的持久化对象。
@Value("XXX")
注入属性值
@JsonIgnore
生成JSON时不生成此属性
@SpringBootApplication
@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
1、@Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
1\. <beans>
2. <bean id = "car" class="com.test.Car">
3. <property name="wheel" ref = "wheel"></property>
4. </bean>
5. <bean id = "wheel" class="com.test.Wheel"></bean>
6\. </beans>
相当于:
1\. @Configuration
2\. public class Conf {
3. @Bean
4. public Car car() {
5. Car car = new Car();
6. car.setWheel(wheel());
7. return car;
8. }
9. @Bean
10. public Wheel wheel() {
11. return new Wheel();
12. }
13\. }
2、@EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
3、@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
## @EnableCaching
它是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了。
@Aspect
切面注解
@Order(1)
tips: Integer.MIN_VALUE < Order < Integer.MAX_VALUE
Order值越小,优先级越高!
@Order的作用范围: ElementType.TYPE, ElementType.METHOD, ElementType.FIELD
@Pointcut("within(com.ubiai.bifrost.controller..*)")
定义切入点
@AfterThrowing(pointcut = "exception()", throwing = "ex")
异常通知
@Around("validate()")
环绕通知,记录校验日志
@Data
类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
@ConfigurationProperties
把配置文件的值直接注入到代码
[图片上传失败...(image-9ab0e4-1527563751954)]
@Configuration
### 配置spring并启动spring容器
@Bean
定义bean,和@Configuration配合使用
@Converter
类型转换器(和@Initbinder不同)
@SuppressWarnings
警告收集器
@NoArgsConstructor
生成一个无参数的构造方法
@RequiredArgsConstructor
会生成一个包含常量,和标识了NotNull的变量的构造方法。生成的构造方法是private,如何想要对外提供使用staticName选项生成一个static方法。
@AllArgsContructor
会生成一个包含所有变量,同时如果变量使用了NotNull annotation, 会进行是否为空的校验。
@Setter
@Getter
生成setter和getter方法
@CacheConfig(cacheNames = {"users"})
* @CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置。在这里@CacheConfig(cacheNames = "users"):配置了该数据访问对象中返回的内容将存储于名为users的缓存对象中,我们也可以不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义。
* @Cacheable:配置了findByName函数的返回值将被加入缓存。同时在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。该注解主要有下面几个参数:
* value、cacheNames:两个等同的参数(cacheNames为Spring 4新增,作为value的别名),用于指定缓存存储的集合名。由于Spring 4中新增了@CacheConfig,因此在Spring 3中原本必须有的value属性,也成为非必需项了
* key:缓存对象存储在Map集合中的key值,非必需,缺省按照函数的所有参数组合作为key值,若自己配置需使用SpEL表达式,比如:@Cacheable(key = "#p0"):使用函数第一个参数作为缓存的key值,更多关于SpEL表达式的详细内容可参考官方文档
* condition:缓存对象的条件,非必需,也需使用SpEL表达式,只有满足表达式条件的内容才会被缓存,比如:@Cacheable(key = "#p0", condition = "#p0.length() < 3"),表示只有当第一个参数的长度小于3的时候才会被缓存,若做此配置上面的AAA用户就不会被缓存,读者可自行实验尝试。
* unless:另外一个缓存条件参数,非必需,需使用SpEL表达式。它不同于condition参数的地方在于它的判断时机,该条件是在函数被调用之后才做判断的,所以它可以通过对result进行判断。
* keyGenerator:用于指定key生成器,非必需。若需要指定一个自定义的key生成器,我们需要去实现org.springframework.cache.interceptor.KeyGenerator接口,并使用该参数来指定。需要注意的是:该参数与key是互斥的
* cacheManager:用于指定使用哪个缓存管理器,非必需。只有当有多个时才需要使用
* cacheResolver:用于指定使用那个缓存解析器,非必需。需通过org.springframework.cache.interceptor.CacheResolver接口来实现自己的缓存解析器,并用该参数指定。
除了这里用到的两个注解之外,还有下面几个核心注解:
* @CachePut:配置于函数上,能够根据参数定义条件来进行缓存,它与@Cacheable不同的是,它每次都会真是调用函数,所以主要用于数据新增和修改操作上。它的参数与@Cacheable类似,具体功能可参考上面对@Cacheable参数的解析
* @CacheEvict:配置于函数上,通常用在删除方法上,用来从缓存中移除相应数据。除了同@Cacheable一样的参数之外,它还有下面两个参数:
* allEntries:非必需,默认为false。当为true时,会移除所有数据
* beforeInvocation:非必需,默认为false,会在调用方法之后移除数据。当为true时,会在调用方法之前移除数据。
@Cacheable(key = "#id")
@CachePut(key = "#user.id")
@CacheEvict(key = "#id")
AccessLevel.PRIVATE
设置访问级别为私有
@RunWith(SpringRunner.class)
@SpringBootTest(properties = {"server.port=9999"})
SpringBoot测试类方法
提示一点:@ConstructorProperties 只能用在JDK 6 中
网友评论