我正在尝试使用 Spring 3 为不同的配置文件实现应用程序,但我不确定它是如何使用 Spring 3 开发的。我有几个困惑
- 当您使用 PropertyPlaceholderConfigurer 开发应用程序时,您如何创建传递给 DAO 类的会话因子对象?
- 如何为每个属性文件创建配置文件。假设我想传递一个“Dev”参数,然后从 dev.proertie 文件中传递应用程序准备好的属性文件,然后将其传递给应用程序。
- 我刚刚在谷歌上阅读了一些教程,大多数教程都遵循每个类中的硬编码配置文件名称,例如每个 DAO 类中的@Profile("dev")。有什么方法可以自动执行它意味着如何注入 DAO 类?我不想在每个班级都添加个人资料名称
这是我的申请清单
这是简单模型对象。
** Employee.Java**
public class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这个类处理数据库。所以我想在这个类中有会话对象而不是数据源对象。
员工 DAO 类
public class EmployeeDao {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Employee employee){
String sql = "insert into employee(name) VALUES (?)";
Connection conn = null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, employee.getName());
ps.executeUpdate();
ps.close();
conn.close();
}
catch (SQLException sqle) {
System.out.println("Sql Exception " + sqle.getMessage());
}
}
此类实际上从属性文件中读取数据,但不确定如何构建注入我的 DAO 类的会话对象
配置文件
public class Config {
@Bean
public static PropertyPlaceholderConfigurer properties(){
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
ClassPathResource[] resources = new ClassPathResource[ ]
{ new ClassPathResource( "db.properties" ) };
ppc.setLocations( resources );
ppc.setIgnoreUnresolvablePlaceholders( true );
return ppc;
}
@Value( "${jdbc.url}" ) private String jdbcUrl;
@Value( "${jdbc.driverClassName}" ) private String driverClassName;
@Value( "${jdbc.username}" ) private String username;
@Value( "${jdbc.password}" ) private String password;
@Bean(name="datasource")
public DataSource datasource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(jdbcUrl);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
@Bean(name="employee")
public Employee employee() {
Employee employee = new Employee();
employee.setName("Sahil");
return employee;
}
@Bean(name="employeeDao")
public EmployeeDao employeeDao() {
EmployeeDao employeeDao = new EmployeeDao();
employeeDao.setDataSource(datasource());
return employeeDao;
}