Java的容器注解说明——@Bean
@Bean:由SpringIoc容器配置和初始化对象,类似于XML配置文件的<bean/>,。(一般@Bean 需要在配置类中使用,即类上需要加上@Configuration注解)
@Bean的name属性:可以通过name属性指定Bean的Id,相当于XML中<bean>的Id。
@Component:如果一个类上标识该注解,表示配置类可以通过@ComponentScan("路径名")扫描到该类,并实例化这个类。
举例:
@Bean的initMethod属性、destroyMethod属性:通过@Bean实例化Bean时要执行的初始化和销毁逻辑。
这个方法相当于在IOC加载时,通过@bean标签调用了该方法,使得IOC容器中存在了一个对象,还是生成了新的对象?还有一个问题就是如果类本身没有加注解,但是方法体或者参数变量,属性加了注解,扫描如何执行?
类不加标注,方法,参数都无法注入。IOC加载了所有类,但并不是生成了所有对象。
在方法上面使用@Bean注解,如果没有指name属性(@bean()),默认bean的id为方法名
基于java的容器注解
@Bean标识一个用于配置和初始化一个由SpringIoC容器管理的信对象的方法,类似于XML配置文件的<bean/>
可以在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是可以)
上一点中,通常使用的是@Configuration
@Bean-2
@Bean-1
笔记基于java的容器注解
@Configuration
@Bean
2.@Bean 需要在配置类中使用,即类上需要加上@Configuration注解;@Compent 作用就相当于 XML配置 ,直接使用
3.在没有指定bean的name的时候,bean的id就是方法名。
4.配置文件(StoreConfig)与其他类或测试类相互独立
需要在接口中声明init和destroy方法,然后在实现类中重写实现,不然会报错,至少idea终会报错,eclipse没有试过。
@Bean:由SpringIoc容器配置和初始化对象,类似于XML配置文件的<bean/>,。(一般@Bean 需要在配置类中使用,即类上需要加上@Configuration注解)
关于 @bean 和 @component 注解的区别的理解:
@component 直接在类上注解,相当于拿到了整个 xml ,可以直接使用
@bean 更多的是用来对具体的某个类进行配置,他结合 @configuration 使用。例如本例中实际是在配置 storeString 这个类,为此专门写了一个配置类,用 @configuration 对配置类进行注解,再用 @bean 对具体的类进行注解,将要配置的类 storeString 注解成一个 bean 对象,在注解中设置其bean 的 id 以及初始化,销毁的方法对这个类进行配置。
使用 @bean 注解的时候如果没有指定 bean 的 id 那么默认的 id 就是 方法的名称
@bean 中可以传入 name、init-method、destroy-method等参数,name 指定了 bean 的 id。初始化和销毁的方法在 storeString 类中实现。
Java的容器注解说明——@Bean
@Bean:由SpringIoc容器配置和初始化对象,类似于XML配置文件的<bean/>,。(一般@Bean 需要在配置类中使用,即类上需要加上@Configuration注解)
@Bean的name属性:可以通过name属性指定Bean的Id,相当于XML中<bean>的Id。
@Component:如果一个类上标识该注解,表示配置类可以通过@ComponentScan("路径名")扫描到该类,并实例化这个类。
举例:
@Bean的initMethod属性、destroyMethod属性:通过@Bean实例化Bean时要执行的初始化和销毁逻辑。
关于@Bean的定义,以及与之前Bean生命周期对应的初始化与销毁部分的对应应用
init-method、destroy-method方法要在实现类中实现
@bean的使用,标识方法。
@Bean注解的使用方法:
在一个类前加@Configuration说明这个类是一个配置文件
@Bean注解的方法返回的是一个实现类,注解得到的bean的id是方法名,类名是返回的对象的类名
可以传入name、init-method、destroy-method等参数,init-method、destroy-method方法要在实现类中实现
@Scope默认是singleton
默认如果@Bean没有指定名称,则使用方法名称作为bean名称
@Bean注解相当于xml配置中的<bean>标签
在StringStore类中定义init()和destory()方法
Store store = super.getBean("stringStore")
使用方法名作为bean的id
@Bean 自定义Bean name
基于java的容器注解
@Bean @Configuration
@Bean 和@Configuration 注解一起使用
init-method 初始化bean
destory-method 销毁bean
@Bean使用
@Configuration类中使用@Bean注解方法
@Bean和@Component区别好像是:
@Bean注册了一个在方法上的Bean,而不同过此方法的调用都得不到这个Bean实例,除非在这个Bean对应的类上注解@Component
@Component注解注册了一个在类上的bean,但是这个bean你只要写上BeanName就可以获得。
bean注解,初始化,销毁
使用Bean注解没有指定名称(@Bean(name = "xx"))的情况下名称是方法的名称