Spring - PropertyPlaceholderConfigurer

时间:2012-12-22 04:16:05

标签: spring profiles

我正在尝试使用Spring 3实现不同配置文件的应用程序,但我不确定它是如何使用Spring 3开发的。我有几个混淆

  1. 使用PropertyPlaceholderConfigurer开发应用程序时,如何创建传递给DAO类的会话因子对象?
  2. 如何为每个属性文件创建配置文件。假设我想从dev.proertie文件传递“Dev”参数然后传递应用程序就绪属性文件,然后将其传递给应用程序。
  3. 我刚刚阅读了谷歌上的一些教程,大多数教程都遵循每个DAO类中每个类中的硬编码配置文件名称,如@Profile(“dev”)。有没有办法自动完成它意味着如何注入DAO类?我不想在每个班级中添加个人资料名称
  4. 以下是我的申请表

    这是简单模型对象。

    ** Employee.Java **

    public class Employee {
      private String name;
      public String getName() {
        return name;
      }
      public void setName(String name) {
        this.name = name;
      }
    }
    

    此类处理数据库。所以我想在这个类而不是Datasource对象中拥有会话对象。

    员工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类中注入的会话对象

    Config.java

    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;
    }
    

0 个答案:

没有答案