@Configuration 与 @ComponentScan
@Configuration :指定该类为配置类 == 配置文件 @ComponentScan:扫描指定路径下带 如下注解 (@Service @Controller @Component @Repository) 的类和接口加入ioc容器(导入自己编写的类)
通过编写配置类的方式用来替代xml配置方式,进行ioc的注入
@Configuration
@MapperScan("com.macro.mall.tiny.mbg.mapper")
@ComponentScan(value = "com.macro.mall.tiny.mbg.mapper",excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)
})
public class MyBatisConfig {
}
@Bean 、@Scope、@Lazy
@Bean:自定义一个容器加入到ioc容器中(导入第三方的包) @Bean(name = “person”,initMethod = “”,destroyMethod = “”)指定初始化和销毁方法
利用scope标签singleton表示单实例(默认),prototype表示多实例。 singleton:每次创建容器的时候创建bean一次,自后使用bean直接获取 prototype:创建容器的时候不创建bean,之后每次获取bean都创建一次
@Lazy :单实例下,创建容器的时候不创建bean,而是在使用的时候加载。
@Configuration
public class MainConfigure2 {
@Scope("prototype")
@Bean("person")
Person person(){
return new Person("sk",22);
}
}
@Import
(快速给容器导入组件)
@Conditional
该注解可以放置于类和方法之上,参数接收一个Condition的数组,根据返回的Boolean值决定类或方法能不能被ioc加载。
@Configuration
public class MainConfigure2 {
@Conditional({ConditionalTest.class})
@Lazy
@Bean("person")
Person person(){
return new Person("sk",22);
}
}
class ConditionalTest implements Condition{
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return true;
}
}
|