Spring容器与bean概要
Posted techno-geek
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } }
以上是关于Spring容器与bean概要的主要内容,如果未能解决你的问题,请参考以下文章