在Spring框架中,创建Bean主要有以下几种方式:
1. XML配置文件方式
在Spring的XML配置文件(如applicationContext.xml
)中,使用<bean>
标签来定义Bean。
<bean id="beanName" class="com.example.PackageName.getClassName">
<!-- 构造方法参数配置 -->
<constructor-arg index="0" value="paramValue"></constructor-arg>
</bean>
示例:
<bean id="userService" class="com.example.service.UserServiceImpl">
<constructor-arg index="0" value="userDAO"></constructor-arg>
</bean>
2. Java注解配置方式
通过在类或方法上添加注解来定义Bean。
(1)使用@Component
及其衍生注解
在类上添加@Component
、@Service
、@Repository
或@Controller
注解,Spring会自动扫描并创建Bean。
@Component
public class UserService {
// ...
}
(2)使用@Bean
注解
在配置类的方法上添加@Bean
注解,手动定义Bean。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
(3)使用@Configuration
类和@Bean
方法
通过配置类中的方法返回Bean实例。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
3. 组件扫描方式
通过@ComponentScan
注解启用组件扫描,自动检测带有@Component
注解的类并创建Bean。
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
// ...
}
4. 工厂方式
通过工厂类创建Bean。
(1)使用FactoryBean
接口
实现FactoryBean
接口,重写getObject
方法来创建Bean。
public class UserServiceFactoryBean implements FactoryBean<UserService> {
@Override
public UserService getObject() throws Exception {
return new UserService();
}
// 其他方法实现...
}
在XML中配置:
<bean id="userService" class="com.example.UserServiceFactoryBean"/>
(2)使用普通工厂类
定义一个普通工厂类,通过@Bean
注解指定工厂方法。
public class UserServiceFactory {
public UserService createUserService() {
return new UserService();
}
}
在配置类中:
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserServiceFactory().createUserService();
}
}