bean构建的4种方式
1、基于className
<bean class="com.warybee.spring.HelloSpring"></bean>
2、基于构造方法
<bean class="com.warybee.spring.HelloSpring" id="helloSpring">
<constructor-arg name="name" value="123"/>
</bean>
3、静态工厂方法
<bean class="com.warybee.spring.HelloSpring" factory-method="build"></bean>
public class HelloSpring {
private String name;
public HelloSpring() {
}
public HelloSpring(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static HelloSpring build(){
return new HelloSpring();
}
}
4、FactoryBean
<bean class="com.warybee.spring.DriverFactoryBean" id="driver">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
</bean>
public class DriverFactoryBean implements FactoryBean {
public String getJdbcUrl() {
return jdbcUrl;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
private String jdbcUrl;
@Override
public Object getObject() throws Exception {
Driver driver = DriverManager.getDriver(jdbcUrl);
return driver;
}
@Override
public Class<?> getObjectType() {
return Driver.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
spring中依赖注入的几种方式
1、set方法注入
<bean class="com.warybee.spring.Order">
<property name="user" ref="user"/>
</bean>
<bean class="com.warybee.spring.User" id="user"></bean>
2、构造方法注入
<bean class="com.warybee.spring.Order">
<constructor-arg name="user">
<bean class="com.warybee.spring.User"></bean>
</constructor-arg>
</bean>
3、自动注入
<bean class="com.warybee.spring.Order" autowire="byName"></bean>
<bean class="com.warybee.spring.User" id="user"></bean>
-
byName :基于变量名与bean名称相同作为依据插入
-
byType:基于变量类别与bean名称相同作为依据插入
-
constructor :基于IOC中bean与构造方法进行匹配