1.普通注入 1)构造器注入 <constructor-arg name="id" value="100" /> #直接赋值 <constructor-arg name="userDAO" ref="userDAO" /> #注入bean 2)setter注入 <property name="song" value="goodbye my love" /> #注入值 <property name="instrument" ref="piano" /> #注入bean 2.注解注入 1)context:scan + @Autowired可减少spring的xml配置,并可自动注入所需的bean到到指定的属性中 <context:component-scan base-package="com.springinaction.demo" /> 2)@Autowired 和 @Resource的区别在于,@Autowired默认为按类型注入,@resource默认按照名称装配。 推荐使用@Resource,可避免有多个同类型bean时出现的注入错误。 @Autowired和@Qualifier联合使用可达到@Resource相同的效果。 如: @Autowired @Qualifier("userDAOImpl") private IUserDAO userDAO; 3.数据源设置(DriverManagerDataSource不支持连接池) <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="test" /> <property name="password" value="test" /> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> *)推荐使用支持连接池的BasicDataSource, DBCP2和DBCP有些细微差异,比如:DBCP2没有了maxActive属性,maxWait属性改成了maxWaitMillis <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@localhost:1521:orcl</value> </property> <property name="username"> <value>test</value> </property> <property name="password"> <value>test</value> </property> <property name="maxActive"> <value>255</value> </property> <property name="maxIdle"> <value>2</value> </property> <property name="maxWait"> <value>120000</value> </property> </bean> 4.使用jdbc.properties文件 #jdbc.properties文件内容如下: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=test jdbc.password=test #在spring的xml添加如下内容,即可使用属性变量(${jdbc.driverClassName}/${jdbc.url}等): <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="maxIdle"> <value>2</value> </property> <property name="maxWaitMillis"> <value>120000</value> </property> </bean>