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(); } |