Spring注解开发之使用原始注解配置bean对象以及注入依赖
第一步:配置组件扫描
<context:component-scan base-package="com.zk"/>
注:base-package表述需要被扫描的包
第二步:添加注解@Component(" ")用于配置bean对象
@Component("userdao")
相当于配置
//<bean id="userdao" class="com.zk.Dao.userdaoimpl"></bean>
第三步:使用@Autowired和@Qualifier注入依赖也可以使用@Resouce(name=" ")进行注入(@Resouce相当于@Autowired和@Qualifier两个联合在一起)
@Autowired @Qualifier("userdao")
相当于
<property name="dao" ref="userdao"></property>
普通属性的注入:
使用@value(" ")进行注入
注:@value(" ")可以去Spring容器里面取值例如:
@value("${jdbc.driver} ")
${}为Spring表达式,作用是在spring容器中寻找键名为jdbc.driver的值
原始注解的缺陷:
1.无法声明非自定义的bean对象
2.没有加载propertites配置的注解
3.没有扫描组件配置的注解
4.没有import配置的注解
Spring新注解的使用
使用示例:
package com.zk.config;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
//声明该类是核心配置类
@Configuration
//配置组件扫描器
@ComponentScan("com.zk")
//将配置文件加载到spring容器中
@PropertySource("classpath:jdbc.properties")
public class SpringConfiguration {
@Value("${jdbc.driver}")
String driver;
@Value("${jdbc.url}")
String url;
@Value("${jdbc.username}")
String user;
@Value("${jdbc.password}")
String password;
@Bean("dataSource")
public DataSource getdatasource() throws PropertyVetoException {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setDriverClass(driver);
comboPooledDataSource.setJdbcUrl(url);
comboPooledDataSource.setUser(user);
comboPooledDataSource.setPassword(password);
return comboPooledDataSource;
}
}