Spring中Bean的不同配置方式

Bean的配置方式一共分为三种:

1.基于XML(适用于第三方类库,无法在类中写注解以及写命名空间的配置等情况)

2.基于注解(适用于大部分情况)

3.基于Java类

以下是三种不同情况的配置方式

  基于XML 基于注解 基于Java类配置
Bean 的定义 <bean class="com.gin.UserName" />

@Component(或衍生@Repositry、@Service及@Controller)

public class UserName {...}

@Configuration

public class

Test{

@Bean

public UserName userName() {

return new   UserName();

}  

}

Bean的名称 <bean id="userName" class="com.gin.UserName" />

@Component("userName")//空的默认值为userName

public class UserName {...}

@Bean(”userName“)

public UserName userName() {

return new   UserName();

} 

Bean的注入

<property name="userName" ref-bean="userName" />

<p:userName-ref="userName">

public class UserService{

@Autowired

@Qualifier("userName")//@Qualifier是可选项

private UserName userName;

@Bean(”userName“)

public UserName userName() {

return new   UserName();

} 

@Bean

public UserService userService() {

UserService userService = new UserService();

userService.setUserName(userName());

@Autowired

private DaoUsername daoUsername;

@Bean

public UserService userService() {

UserService userService = new UserService();

userService.setUserName(daoUsername.userName())

Bean的生命过程方法

<bean id="userName" class="com.gin.UserName" init-method="init" destory-method="destory" /> //初始化和销毁都只有一个   

public class UserService{

@Autowired

private UserName userName;

@PostConstruct

public void init() {}

@PreDestory

public void destory() {}

}//初始化和销毁可以有多个

Bean的作用范围 bean id="userName" class="com.gin.UserName" scope="prototype" />  @Scope("protptype")

public class UserService{}

@Scope("protptype)

@Bean

public UserName userName() {

return new   UserName();

} 

原文地址:https://www.cnblogs.com/jing-daye/p/5911138.html