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);
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。