企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
~~~ Bean 的配置方式: 基于XML的方式配置bean. 1.通过全类名(反射) 2.通过工厂方法(静态工厂方法 & 实例工厂方法) 3.FactoryBean 基于注解的方式配置bean. ~~~ ~~~ //静态工厂方法 public class StaticFactory { private static Map<String,Person> persons=new HashMap<String,Person>(); static{ persons.put("tom", new Person("汤姆",18)); persons.put("jack", new Person("杰克",20)); } public static Person getPerson(String name){ return persons.get(name); } } //Person类 public class Person { private String name; private int age; public Person(String name,int age) { super(); this.name = name; this.age = age; } public Person() { super(); // TODO Auto-generated constructor stub } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } } //实例工厂方法 /* * 类变量 static修饰的变量 类名.直接调用 * * 实例(对象)变量 */ public class InstanceFactory { private Map<String,Person> persons=null; public InstanceFactory(){ persons=new HashMap<String,Person>(); persons.put("haha", new Person("haha",18)); persons.put("xixi", new Person("xixi",20)); } public Person getPerson(String name){ return persons.get(name); } } ~~~ ~~~ <!-- 静态工厂方法来配置bean 配置的bean不是工厂本身,而是工厂产生的对象 class指向静态工厂 factory-method 需要指向工厂方法 constructor-arg 向工厂方法传参 --> <!-- 通过静态工厂方法配置bean --> <bean id="static" class="cn.li.lesson4.StaticFactory" factory-method="getPerson"> <constructor-arg value="jack"></constructor-arg> </bean> <!-- 通过实例工厂方法配置bean 1.配置工厂本身--> <bean id="instanceFactory" class="cn.li.lesson4.InstanceFactory"></bean> <!-- 配置需要的bean实例 factory-bean指向实例工厂的bean, factory-method实例工厂的方法名。--> <bean id="xixi" factory-bean="instanceFactory" factory-method="getPerson"> <constructor-arg value="xixi"></constructor-arg> </bean> ~~~ ~~~ <!-- FactoryBean --> public class PersonFactoryBean implements FactoryBean<Person> { private String name; public void setName(String name) { this.name = name; } @Override public Person getObject() throws Exception { // TODO Auto-generated method stub return new Person(name,30); } @Override public Class<?> getObjectType() { // TODO Auto-generated method stub return Person.class; } @Override public boolean isSingleton() { // TODO Auto-generated method stub return false; } } <!-- 通过factorybean 配置 bean的实例。property配置factorybean的属性值。--> <bean id="p1" class="cn.li.lesson4.PersonFactoryBean"> <property name="name" value="张三"></property> </bean> ~~~