@EnableAutoConfiguration
@SpringBootApplication
等价 @Configuration,@EnableAutoConfiguration和@ComponentScan
@SpringBootTest
参数webEnvironment有四种配置
MOCK
Creates a WebApplicationContext with a mock servlet environment or a regular ApplicationContext if servlet APIs are not on the classpath.RANDOM_PORT
Creates an EmbeddedWebApplicationContext and sets a server.port=0 Environment property (which usually triggers listening on a random port). Often used in conjunction with a LocalServerPort injected field on the test.DEFINED_PORT
Creates an EmbeddedWebApplicationContext without defining any server.port=0 Environment property.
(application.properties配置端口或者默认端口8080)NONE
Creates an ApplicationContext and sets SpringApplication.setWebEnvironment(boolean) to false.
@SpringRunner
SpringRunner是SpringJUnit4ClassRunner
1 | public final class SpringRunner extends SpringJUnit4ClassRunner |
@Transactional
@Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个
@Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务
@Transactional(propagation=Propagation.REQUIREDS_NEW)//不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY)//必须在一个已有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER)//不能在一个事务中执行,就是当前必须没有事务,否则抛出异常
@Transactional(propagation=Propagation.SUPPORTS)//其他bean调用这个方法,如果在其他bean中声明了事务,就是用事务。没有声明,就不用事务。
@Transactional(propagation=Propagation.NESTED)//如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动的事务,则按照REQUIRED属性执行,它使用一个单独的事务。这个书屋拥有多个回滚的保存点,内部事务的回滚不会对外部事务造成影响,它只对DataSource TransactionManager事务管理器起效。
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)//只读,不能更新,删除
@Transactional(propagation=Propagation.REQUIRED,timeout=30)//超时30秒
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)//数据库隔离级别
@PostConstruct
@ConditionalOnProperty
这个注解能够控制某个configuration是否生效。
具体操作是通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值,如果该值为空,
则返回false;如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。如果返回值为false,则该
configuration不生效;为true则生效。
单元测试里面控制方式
1 | "key=value") (properties = |
@Autowire
- 有参构造使用@Value(“default value”)
1 |
|
- 多个bean,使用@Qualifier