bean属性设置默认值_Spring_day04:Spring的@Bean注解Spring的@Bean注解⽤于告诉⽅法
实体 POJO
public class Person {private String name;private Integer age;public Person() {}public Person(String name, Integer age) {this.name = name;this.age = age;}spring ioc注解
// 省略 getter setter// 后续会省略 toString ⽅法, 使⽤ IDE⾃动⽣成就可以了\@Overridepublic String toString() {
return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}}
xml 配置⽅式
<bean id="person" class="me.sjl.bean.Person"><property name="age" value="18"/><property name="name"value="sjl"/>bean>
测试代码
public static void main(String[] args) {ApplicationContext ctx = newClassPathXmlApplicationContext("cl
asspath:/l");Person person = (Person 测试结果
bean 创建成功以上是我们使⽤传统的 xml 配置⽅式创建⼀个 bean的⽅式,下⾯我们使⽤注解来创建⼀个 bean。
@Bean
JavaConfig ⽅式@Configurationpublic class BeanConfig {@Beanpublic Person person() {return new Person("SJL01", 20);}}
在配置类上打个⼀个 \@Configuration 注解,表⽰声明该类为 Spring的配置类。在创建⼀个⽅法,⽅法返回对象即我们要创建的对象
Person ,返回该对象的实例。在⽅法上打上注解 \@Bean即表⽰声明该⽅法返回的实例是受 Spring管理的 Bean。
测试代码
@Testpublic void test2() {ApplicationContext ctx = newAnnotationConfigApplicationContext(BeanConfig.class);Person person = Bean(Person.class);System 结果
使⽤注解⽅法创建 bean 成功
这⾥使⽤的是 AnnotationConfigApplicationContext() 类,传⼊参数就是 配置类
@Bean 注解的属性解析
value
name
name 和 value 两个属性是相同的含义的, 在代码中定义了别名。为 bean起⼀个名字,如果默认没有写该属性,那么就使⽤⽅法的名称为
该 bean 的名称
autowire
装配⽅式 有三个选项Autowire.NO (默认设置)Autowire.BY_NAMEAutowire.BY_TYPE指定 bean 的装配⽅式, 根据名称 和 根据类型
装配, ⼀般不设置,采⽤默认即可
initMethod
bean 的初始化⽅法, 直接指定⽅法名称即可,不⽤带括号
@Configurationpublic class BeanConfig {@Bean(initMethod = "init")public Person person() {return new Person("SJL01", 20);}}Person 类添加 init() ⽅法public void
destroyMethod
bean 的销毁⽅法, 在调⽤ IoC 容器的 close()⽅法时,会执⾏到该属性指定的⽅法。不过,只是单实例的 bean才会调⽤该⽅法,如果是
多实例的情况下,不会调⽤该⽅法
@Bean(destroyMethod = "destroy")public Person person() {return new Person("SJL01", 20);}Person 类添加 destroy() ⽅法public void destroy() {System.out.println
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论