替換配置文件註解

該類是一個配置類,作用和bean.xml作用是一樣的。
    1.@Configuration
    	作用:指定當前類是一個配置類。
    	
    2.@ComponentScan
    
    	作用:指定spring容器在創建容器時要掃描的包
    	屬性:value和basePackages作用是一樣的,都是指定創建
    				容器時指定的包。
    	使用此註解就相當於配置了:
    			<context:component-scan base-package="com.itheima.dao"/>
    			
    3、@Bean
    	作用:把當前方法的返回值作爲bean對象存入spring容器中
    	屬性:name,用於指定bean的id,不寫時,默認爲爲當前方法名稱
	
		注意:當時用註解配置方法是,如果有參數,spring框架會去容器中查找
					是否有bean對象,查找的方法和@Autowired是一樣的。
					例:(1)處dataSource引用(2)處dataSource
	程序:			
		@Configuration
		@ComponentScan(basePackages = "com.itheima")
		public class springConfig {

		  @Bean(name = "runner")
		  public QueryRunner createQueryRunner(DataSource dataSource){
		  																									(1)
		      return new QueryRunner(dataSource);
		  }

		  @Bean
		  public DataSource dataSource(){
													(2)
		      try {
		          ComboPooledDataSource ds=new ComboPooledDataSource();
		          ds.setDriverClass("");
		          ds.setJdbcUrl("");
		          ds.setUser("");
		          ds.setPassword("");
		              return ds;
		      }catch (Exception e){
		          throw new RuntimeException(e);
		      }
		  }
		}

   
   4.@Import
   		作用:用於導入其他的配置類
   		屬性:value,用於指定其他類的字節碼文件
   		
   5.@PropertySource
   		作用:用於讀取properties文件
   		屬性:value,指定文件的名稱和路徑
   		關鍵字:classpath,表示類路徑下的
   6.@Qualifier
   		在注入方法的名稱時可以獨立使用
   		
  程序:
SpringConfiguration類:
			@ComponentScan("com.itheima")
			@Import(JdbcConfig.class)
			@PropertySource("classpath:jdbcConfig.properties")
			public class SpringConfiguration {

			}
			
JdbcConfig類:	
		public class JdbcConfig {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    /**
     * 用於創建一個QueryRunner對象
     * @param dataSource
     * @return
     */
    @Bean(name="runner")
    @Scope("prototype")
    public QueryRunner createQueryRunner(@Qualifier("ds2") DataSource dataSource){
        return new QueryRunner(dataSource);
    }

    /**
     * 創建數據源對象
     * @return
     */
    @Bean(name="ds2")
    public DataSource createDataSource(){
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setDriverClass(driver);
            ds.setJdbcUrl(url);
            ds.setUser(username);
            ds.setPassword(password);
            return ds;
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }

    @Bean(name="ds1")
    public DataSource createDataSource1(){
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setDriverClass(driver);
            ds.setJdbcUrl("jdbc:mysql://localhost:3306/eesy02");
            ds.setUser(username);
            ds.setPassword(password);
            return ds;
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }
}
    					

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章