Spring的学习(二):装配Bean

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制:

  • 在XML中进行显示配置
  • 在Java中进行显示配置
  • 隐式的bean发现机制和自动装配

1.自动化装配bean

Spring从两个角度来实现自动化装配:

  • 组件扫描:Spring会自动发现应用上下文中所创建的bean
  • 自动装配:Spring自动满足bean之间的依赖
    组件扫描和自动装配组合在一起就能发挥出强大的威力,它们能够将你的显式配置降低到最少。

组件扫描:使用@ComponentScan注解会自动扫描包下所有使用@Service、@Component、@Repository、@Controller类并注册成为Bean(可以更改包的名称)。

自动装配:@Autowired可以对成员变量、方法、构造函数进行注释(默认按照类型进行装配)。

2.通过Java代码装配bean

有些场景是没有办法使用自动化装配的,如要将第三方库中的组件装配到你的应用中(这种没有办法对类使用注解,不能够更改源代码),可以使用显示装配的方式。显示装配又分为XML和Java。我们先来介绍一下Java代码装配的方式。

步骤:
(1)创建配置类
新建一个配置类,使用@Configuration注解。(相当于XML方法中对应的xml文件)
(2)声明简单的bean
在配置类的中的方法上使用@Bean注解,告诉Spring这个方法会返回一个对象,该对象要注册为Spring应用上下文中的bean。方法体中包含了最终产生bean实例的逻辑。(相当于xml文件中的bean标签)
(3)借助JavaConfig实现注入
在JavaConfig中装配bean的最简单的方式就是引入创建bean的方法。如:

@Configuration
public class CDPlayerConfig(){
	@Bean
	public CompactDisc compactDisc(){
		return new CompactDisc();
	}
	@Bean
	public CDPlayer cdPlayer(){
		return new CDPlayer(compactDisc());
	}
}

3.使用XML装配bean

步骤:
(1)创建XML配置规范:
在使用XML为Spring装配bean之前,你需要创建一个新的配置规范。在使用JavaConfig的时候,这意味着要创建一个带有@Configuration注解的类,而在XML配置中,这意味着要创建一个XML文件,并且要以beans标签元素为根。

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
				http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
				http://www.springframework.org/schema/tx 
				http://www.springframework.org/schema/tx/spring-tx.xsd"
	xmlns:tx="http://www.springframework.org/schema/tx">
</beans>

(2)声明一个简单的bean标签

<bean class="soundsystem.CompactDisc" />

(3)注入
例如:

<bean id="dataSource"
	class="org.apache.commons.dbcp.BasicDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
</bean>
<bean id="sessionFactory"
	class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
	<property name="dataSource">
		<ref bean="dataSource" />
	</property>
</bean>

将dataSource注入到了sessionFactory中。

猜你喜欢

转载自blog.csdn.net/jdfk423/article/details/82931914
今日推荐