数据库连接池的XML配置
此处我用的是c3p0连接池,导入外部的数据库配置文件
<context:property-placeholder location="classpath:jdbc.properties">
</context:property-placeholder>
<bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
Spring的IOC和依赖注入注解配置
@Component("bean的id值") 定义在类上 只要定义在了类上
那么注解扫描器只要一扫描到就会创建该类的实例对象 放在spring容器中
现在都是使用这个注解所衍生的三个注解
@Controller("bean的id值") 针对的就是web层
@Service("bean的id值") 针对的是service层
@Repository("bean的id值") 针对的是dao层
@Scope("singleton"或则prototype) 定义在类上的 指定当前类是单实例还是多实例
将其放到类的上方即可,如不指定bean的id值,则默认为方法名的首字母小写的名称
@Repository
public class PersonDaoImpl implements PersonDao{}
@Service
public class PersonServiceImpl implements PersonService{}
接下来就是数据的依赖注入
@Value("属性值") 定义在属性字段上 针对的是基本类型和String类型
如果使用了这个注解 该属性的set方法可以省略不写
@Autowired 定义在属性字段上的 针对的是对象类型
如果定义在了那个对象类型的属性身上 会自动去spring容器中找该类型的实例对象给赋值,当容器中
存在多个该类型的实例对象时会报错,这是需要和下面这个注解配合使用
@Qualifier("bean的id值")定义在属性字段上的 指定用该类型的哪个id名称的实例对象
注意: @Qualifier要想使用 必须结合 @Autowired 一起使用
@Resource("bean的id值")是@Autowired和@Qualifier俩注解的功能和
@PostConstruct 初始化执行的方法,放在方法上
@PreDestroy 销毁时执行的方法,放在方法上
@Value("3")
private Integer id;
@Autowired
// @Qualifier("personDaoImpl")
private PersonDao personDao;
@Override
public void save() {
personDao.save();
}
@PostConstruct //初始化执行的方法
public void init() {
System.out.println("PersonServiceImpl创建了");
}
@PreDestroy //销毁时执行的方法
public void destory() {
System.out.println("PersonServiceImpl销毁了");
}
Spring的注解配置文件和数据库连接池的注解配置
@Configuration //注解配置类
@ComponentScan(value="service,dao") //配置要扫描的包,扫描多个包用逗号隔开
@PropertySource(value="classpath:jdbc.properties") //配置要加载的外部文件
public class SpringConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean(name="c3p0")
public DataSource createDataSource() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(password);
return dataSource;
}
// Spring在4.3版本之前要配置此解析器,否则无法识别${},4.3及以后的版本不需要配置
@Bean
public static PropertySourcesPlaceholderConfigurer createPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
此文章为我个人的学习笔记总结,自用