Spring容器与bean概要

容器:

  通俗的理解容器就是用来管理bean和bean之间依赖的一个组件。很多参考资料说容器就是org.springframework.context.ApplicationContext,但笔者认为这么说有点片面了。我们可以看到这个类的定义,继承了 ListableBeanFactory 而 ListableBeanFactory 又继承了BeanFactory。而beanfactory也其他子类来管理bean,所以我认为 applicationContext和容器 只能是is-a的关系。文中会演示通过AlpplicationContext和BeanFactory的子类来获取bean。

如何配置元数据

  配置元数据代表了开发人员告诉容器,该如何来实例化,配置和组装bean(即管理bean以及bean间关系)。  

  常见的配置方式:

    1.基于xml配置文件

      

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="..." class="...">
<!-- 此间放依赖和配置-->
</bean>
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions go here -->
</beans>

    2.基于注解的配置(spring2.5+)

@Service
public class UserService {
    @Autowired
    private UserDao userDao;

    public User getUser() {
        return userDao.queryUser();
    }

}

注解的方式 :如果使用的javaconfig的配置模式,则需要在配置类上配置扫描包。

    3.基于java的配置(spring 3.0+)

@Configuration//申明为配置类
@ComponentScan("com.easyunion.*")//配置自动扫描包
@ConfigurationProperties("classpath:jdbc.properties")//配置外部文件位置
public class SpringConfig {
    @Bean
    public UserDao userDao() {
        return new UserDao();
    }

    @Value("${jdbc.username}")
    private String user;
    @Value("${jdbc.password}")
    private String password;
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.driverClass}")
    private String driverClass;

    // 配置c3p0
    @Bean
    public ComboPooledDataSource dataSource() throws PropertyVetoException {

        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setUser(user);
        dataSource.setPassword(password);
        dataSource.setJdbcUrl(jdbcUrl);
        dataSource.setDriverClass(driverClass);
        return dataSource;
    }

    
    
    
    
    
    

}

猜你喜欢

转载自www.cnblogs.com/easyunion/p/9105089.html