1 将类注册到到Spring容器

该类的实例化和初始化过程由spring控制。

方法一:xml注册Bean

xml注册Bean,如果spring配置元数据的方式是xml时,可以手动在xml注册第三方jar包中的类。常用来配置本项目中的Bean。

<bean id="service1" class="stu.spring.services.Service1"></bean>

方法二:@Componen

扫描注解,如果spring配置元数据的方式是注解时,指定扫描包然后给类上加@Component注解就可以。常用来扫描本项目中的Bean。

xml指定扫描包:

<context:component-scan base-package="stu.spring.lifecycle"></context:component-scan>

Java Configuration指定扫描包:

@Configuration
@ComponentScan("stu.spring.services")
public class AppConfig {
}

方法三:@Configuration

spring配置元数据的方式使用Java Configuration时,指定配置类的注解,spring该注解spring在实例化该类的对象时是先通过cglib代理生成代理类,再实例化对象。

@Configuration
public class ConfigA {
}

方法四:@Import

@Import注解,用于java配置类上才有效,常用来导入一个或者多个配置类,导入非配置类也可以。

@Configuration
public class ConfigA {
    @Bean
    public A a() {
        return new A();
    }
}
@Configuration
@Import(ConfigA.class)
public class ConfigB {
    @Bean
    public B b() {
        return new B();
    }
}

2 将一个对象注册到spring容器

该对象的实例化和初始化过程由程序员控制。

方法一:@Bean

@Bean注册Bean,如果spring配置元数据的方式是Java Configuration时,可以使用@Bean注解注册第三方jar包中的类。一般用来注册一些配置信息。

@Bean
public A1Service getA2Service(){
   return new A1Service() ;
}

方法二:spring容器直接注册

获取到使用容器,使用spring容器直接注册bean。获取spring容器的方法有很多不仅仅下面示例展示的方式。

AnnotationConfigApplicationContext ann = new AnnotationConfigApplicationContext(AppConfig.class);
ann.getBeanFactory().registerSingleton("testService",new A1Service());

方法三:FactoryBean

使用自定义的FactoryBean,一般和第三方jar继承或者扩展spring使用该方式

@Component
public class CustomerFactoryBean implements FactoryBean<A1Service> {
   @Override
   public A1Service getObject() throws Exception {
      return new A1Service();
   }

   @Override
   public Class<?> getObjectType() {
      return A1Service.class;
   }

}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐