欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring的@Bean注解

程序员文章站 2022-05-21 22:10:42
...

@Bean可以用于方法,注解上面

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
    @AliasFor("name")
    String[] value() default {};

    @AliasFor("value")
    String[] name() default {};

    /** @deprecated */
    @Deprecated
    Autowire autowire() default Autowire.NO;

    boolean autowireCandidate() default true;

    String initMethod() default "";

    String destroyMethod() default "(inferred)";
}
@Configuration
public class SpringConfiguration {

    //创建数据源对象
    @Bean(value = "dataSource")
    public DataSource createDataSource() {
        return new DriverManagerDataSource();
    }

    @Bean(value = "jdbcTemplate")
    public JdbcTemplate JDBCTemplate(@Autowired DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}
public class BeanTest {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("config");
        DataSource dataSource = context.getBean("dataSource", DataSource.class);
        System.out.println(dataSource);
    }
}

 

当有指定的属性值value=dataSource,在ioc容器中就可以根据id=dataSource来注入对应的对象

如果没有,默认使用的时方法名作为注入的id

@Configuration
public class SpringConfiguration {

    //创建数据源对象
    @Bean
    public DataSource createDataSource() {
        return new DriverManagerDataSource();
    }

    @Bean
    public JdbcTemplate JDBCTemplate(@Autowired DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}
public class BeanTest {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("config");
        DataSource dataSource = context.getBean("createDataSource", DataSource.class);
        System.out.println(dataSource);
    }
}

 

 

相关标签: spingboot