基于xml形式Bean注入
@Data @AllArgsConstructor @NoArgsConstructor public class PersonBean { private Integer id; private String name; private String address; }
<bean class="com.luna.annotation.PersonBean" id="personBean"> <property name="name" value="张三"/> <property name="address" value="上海"/> <property name="id" value="1"/> </bean>
//基于xml完成数据Bean注入 @Test public void test(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml"); PersonBean personBean = (PersonBean) applicationContext.getBean("personBean"); System.out.println(personBean.getAddress()); }
基于Annotation形式Bean注入
@Configuration//告诉spring这是个配置类 public class PersonBeanConfig { @Bean(value = "person")//默认情况下使用方法名作为属性名 public PersonBean personBean(){ return new PersonBean(1,"李四","北京"); } }
//基于纯注解完成数据注入 @Test public void test(){ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(PersonBeanConfig.class); PersonBean personBean = applicationContext.getBean(PersonBean.class);//类型 System.out.println(personBean.getAddress()); PersonBean person = (PersonBean)applicationContext.getBean("person");//属性名 System.out.println(person.getAddress()); String[] names= applicationContext.getBeanNamesForType(PersonBean.class);//查看在容器中当前Bean的属性名 for(String name:names){ System.out.println(name); } }