1.spring bea 的回调
- 实现initializingBean,DisposableBean
- @bean(initMenth = ‘init’)可以用,但又个问题,引号里的参数不知道
- @PostConstruct@ProDestory
2.dependson先一步初始化
在当前类@Dependson(需要依赖的bean)
**问题:**依赖的类需要单例,多例就会失效,会加载两次
3.@Lazy懒加载,不调用不加载
4…includeFilters,excludeFilter,排除和包含
excludeFilters =
{@ComponentScan.Filter(type = FilterType.REGEX, pattern = "com.sun.*")},
includeFilters =
{@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = COMMENT.class)},(@comment及其派生注解都会被加载)
useDefaultFilters = false
com.sun.*会把包名为sun1的包也剔除
5.@primary,@qulifiler
@primary相当于给不是唯一的标记了个标签,当被创建为对象时,选择有这个标签的
@qulifiler 配合@Autowire使用,指定实现类
6.接入mybatis
1.包myatis,mybatis-spring,spring-jdbc,mysql-connector-java
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
return sqlSessionFactoryBean;
}
@Bean
public DataSource dataSource(){
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver");
driverManagerDataSource.setUsername("root");
driverManagerDataSource.setPassword("root");
driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/test");
return driverManagerDataSource;
}
7.循环引用
单例可以,多例不可以
8.@profiles bean和类都可以
标记为@Profiles将不会被加载,只有被激活时才加载
AnnotationConfigApplicationContext annotationConfigApplicationContext =
new AnnotationConfigApplicationContext();
annotationConfigApplicationContext.getEnvironment().setActiveProfiles("impl111");
annotationConfigApplicationContext.register(Spring.class);
annotationConfigApplicationContext.refresh();