Spring 治理 bean 的劣势
应用计算机的目标时进行高效且低耗的计算。
对于面向对象语言来说解决问题,须要迷信的使用对象,使之在内存中高效低耗的运行,要达成这样的目标须要肯定的教训,所以咱们须要借助有教训的设计框架,如 spring 框架。spring 框架睁开眼在多个对象协同作用时,低耦合的形式进步其拓展性。
@Qualifier
在接口实现类存在多个的时候,在注入 @Autowired 的同时加上 @Qualifier 注解指定其注入哪个。
DataSource
在 java 中所有连接池必须恪守 datasource 标准,能够通过 DataSource 或缺具体链接池对象。
数据链接池的长处
1. 资源的重用
大大减少连贯创立和敞开的时候的老本
2. 连贯治理更加的自在
用户能够本人依据须要调整,本人所须要的连贯配置
3. 大大的缩小零碎反应时间
缩小创立连贯的工夫,从缩小整体的零碎可能反应时间。
案例
接口的定义
package com.cy.pj.goods.dao;
import java.util.List;
import java.util.Map;
public interface GoodsDao {List<Map<String,Object>> findGoods();
}
实现类()
finally 里代码为敞开 conn,stat,rs。
未写出能够本人封装援用。
package com.cy.pj.goods.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
public class DefaultGoodsDao implements GoodsDao{
@Autowired
private DataSource dataSource;
@Override
public List<Map<String, Object>> findGoods() {
Connection conn=null;
Statement stat=null;
ResultSet rs=null;
String sql="select * from tb_goods";
List<Map<String,Object>> list=new ArrayList<>();
try{conn=dataSource.getConnection();
stat=conn.createStatement();
rs=stat.executeQuery(sql);
ResultSetMetaData rsmd= rs.getMetaData();
while (rs.next()) {list.add(rowsmap(rsmd, rs));
}
return list;
}catch (SQLException e){e.printStackTrace();
return null;
}finally{}}
private Map<String,Object> rowsmap(ResultSetMetaData rsmd,ResultSet rs) throws SQLException{int columnCount = rsmd.getColumnCount();
Map<String,Object> map=new HashMap<>();
for (int i=1;i<=columnCount;i++){map.put(rsmd.getColumnLabel(i),rs.getObject(i));
}
return map;
}
}
测试类
package com.cy.pj.goods.dao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import java.util.Map;
@SpringBootTest
public class GoodsDaoTest {
@Autowired
private GoodsDao goodsDao;
@Test
void testGoodsDao(){List<Map<String,Object>> list=goodsDao.findGoods();
for (Map<String,Object> map:list){System.out.println(map);
}
}
}