list, map, @Autowired

2024. 2. 28. 23:37Daily Codig Reminder

collection_list

@SpringBootApplication  
/// 서브패키지에 있는 @JavaConfig 자동생성함 
public class Sample01BeanApplication {

	public static void main(String[] args) {
	ApplicationContext ctx=	SpringApplication.run(Sample01BeanApplication.class, args);
	DBService service= ctx.getBean("myService", DBService.class);
	List<String> list= service.list();
	System.out.println(list.size());
	for (String s : list) {
	//	List<String> data= dao.list();
		System.out.println(s);
	}
	
	}

}

 

 

@Configuration
public class JavaConfig {
	
	@Bean	
	public DBOracleDAO dao(List<String> list) {
		return new DBOracleDAO(list);
	}
//	@Bean	
//	public DBMYSQLDAO dao2(List<String> list) {
//		return new DBMYSQLDAO(list);
//	}
	@Bean	
	public List<String> list() {
		return Arrays.asList("홍길동1", "홍길동2");
	}
	
	
	@Bean("myService")////////////////////////
	public DBService service(DBDao xxx) {   //by type 주입 
		
		return new DBService(xxx);///////////////
	}
	
	

}

 

 

 

 

//@Service("myService")
public class DBService {
	DBDao dao;

	public DBService(DBDao dao) {
		super();
		this.dao = dao;
	}

	public List<String> list() {
		return dao.list();
	}

	public DBDao getDao() {
		return dao;
	}

	public void setDao(DBDao dao) {
		this.dao = dao;
	}

	
	
	
	
}

 

 

public interface DBDao {
	public abstract List<String> list();
}

 

 

public class DBMYSQLDAO implements DBDao {
	List<String> list;
	public DBMYSQLDAO(List<String> list) {
		super();
		this.list = list;
	}
	@Override
	public List<String> list() {
		// TODO Auto-generated method stub
		return list;
	}

}

 

 

public class DBOracleDAO implements DBDao {
	List<String> list;
	public DBOracleDAO(List<String> list) {
		super();
		this.list = list;
	}
	public List<String> list(){
		return list;
	}

}

2

홍길동1

홍길동2

 

list

javaconfig

  1. list 빈생성
  2. mysqldao list 주입
  3. oracledao list 주입
  4. service에 mysql, oracledao 주입

DBservice 수정

:dao 를 여러개 가질 수 있도록 멤버변수 수정

.getList 함수의 구현: List<dao> 리턴

메인의 수정

service 의 dao 리스트를 가져와 전체 순회하면서 데이터 출력

//@Service("myService")
public class DBService {
	List<DBDao> list;

	public DBService(List<DBDao> list) {
		super();
		this.list = list;
	}

	public List<DBDao> getList() {
		return list;
	}

	public void setList(List<DBDao> list) {
		this.list = list;
	}
	
	
	
}

 

@Configuration
public class JavaConfig {
	@Bean	
	public List<String> list() {
		return Arrays.asList("홍길동1", "홍길동2");
	}
	@Bean	
	public DBOracleDAO dao(List<String> list) {
		return new DBOracleDAO(list);
	}
	@Bean	
	public DBMYSQLDAO dao2(List<String> list) {
		return new DBMYSQLDAO(list);
	}

	@Bean("myService")////////////////////////
	public DBService service(List<DBDao> list) {   //by type 주입 
		
		return new DBService(list);///////////////
	}
	
	

}

 

@SpringBootApplication  
/// 서브패키지에 있는 @JavaConfig 자동생성함 
public class Sample01BeanApplication {

	public static void main(String[] args) {
	ApplicationContext ctx=	SpringApplication.run(Sample01BeanApplication.class, args);
	DBService service= ctx.getBean("myService", DBService.class);
	List<DBDao> list= service.getList();
	System.out.println(list.size());
	for (DBDao dao : list) {
		List<String> data= dao.list();
		System.out.println(data);
	}
	
	}

}

 

public interface DBDao {
	public abstract List<String> list();
}

 

 

public class DBMYSQLDAO implements DBDao {
	List<String> list;
	public DBMYSQLDAO(List<String> list) {
		super();
		this.list = list;
	}
	@Override
	public List<String> list() {
		// TODO Auto-generated method stub
		return list;
	}

}

 

public class DBOracleDAO implements DBDao {
	List<String> list;
	public DBOracleDAO(List<String> list) {
		super();
		this.list = list;
	}
	public List<String> list(){
		return list;
	}

}

2

[홍길동1, 홍길동2]

[홍길동1, 홍길동2]

 

 

list

@Configuration
public class JavaConfig {

	@Bean("xx1") 
	public List<String> list(){
		return Arrays.asList("홍길동1","홍길동2");
	}
	@Bean("xx2")
	public List<String> list2(){
		return Arrays.asList("홍길동3","홍길동4");
	}
	@Bean
	public DBMYSQLDAO dao1 (List<String> xx1) {
		return new DBMYSQLDAO(xx1);
	}
	@Bean
	public DBOracleDAO dao2 (List<String> xx2) {
		return new DBOracleDAO(xx2);
	}
	@Bean("myService")
	public DBService service(List<DBDao> list) { //by type 주입
		
		return new DBService(list);
	}

 

 

map2

public interface DBDao {
public  abstract List<String> list(); //추상함수
}

 

public class DBMYSQLDAO implements DBDao {

	@Override
	public List<String> list() {
		return Arrays.asList("mysql 홍길동2", "mysql 이순신2");
	}

	
	
}

 

public class DBOracleDAO implements DBDao{
	public List<String> list() {
		return Arrays.asList("mysql 홍길동2", "mysql 이순신2");
	}

}
public class DBService {
  
//one, mySQLSAO-list()
	//two, oracleDAO - list()
Map<String, DBDao> list;

public Map<String, DBDao> getList() {
	return list;
}

public void setList(Map<String, DBDao> list) {
	this.list = list;
}

public DBService(Map<String, DBDao> list) {
	super();
	this.list = list;
}



  
}

 

 

@Configuration
public class JavaConfig {

	
	@Bean("one")
	public DBOracleDAO one() {
		return new DBOracleDAO(); //one/DBOracleDAO
	}
	@Bean("two") 
	public DBMYSQLDAO two() { //two/DBMYSQLDAO
		return new DBMYSQLDAO();
	}	

	@Bean("myService")
	public DBService service( Map <String, DBDao> map) { //bytype 주입
		//one/DBOracleDAO
		//two/DBMYSQLDAO
		//service 에 저장
		return new  DBService(map);
	}


}

 

@SpringBootApplication
public class Boot05Di4CollectionList3Application {

	public static void main(String[] args) {
		ApplicationContext ctx = SpringApplication.run(Boot05Di4CollectionList3Application.class, args);
		DBService service = ctx.getBean("myService",DBService.class);
		Map<String, DBDao> map = service.getList();
Set<String> keys= map.keySet();
        // Map의 키셋을 사용하여 전체 순회
        for (String key : keys) {
            List<String> list= map.get(key).list();
            for (String s : list) {
				System.out.println(s);
			}
        }
	}

결과

mysql 홍길동2

mysql 이순신2

mysql 홍길동2

mysql 이순신2

 

map3

bean(”one”) 으로 안하고 함수이름 one으로 하기

@Bean

 

public DBMYSQLDAO two() { //two/DBMYSQLDAO

return new DBMYSQLDAO();

}

 

map

 

 

public class DBMYSQLDAO implements DBDao {

	    @Override
	    public Map<String, String> list() {
	    	Map<String, String> map= new HashMap<>();
	        map.put("one", "홍길동1");
	        map.put("two", "홍길동2");

	        // Map의 값들을 List에 담아서 반환
	        return map;
	    }
}

 

 

public class DBOracleDAO implements DBDao{
	@Override
	public Map<String, String> list() {
		Map<String, String> map= new HashMap<>();
		map.put("one", "홍길동3");
		map.put("two", "홍길동4");
		return map;
	}
}

 

 

public interface DBDao {
	public abstract Map<String, String> list();
}

 

 

public class DBService {
  
//one, mySQLSAO-list()
	//two, oracleDAO - list()
List<DBDao> list;

public List<DBDao> getList() {
	return list;
}

public void setList(List<DBDao> list) {
	this.list = list;
}

public DBService(List<DBDao> list) {
	super();
	this.list = list;
}



}

 

 

@Configuration
public class JavaConfig {

	
	@Bean("one")
	public DBOracleDAO one() {
		return new DBOracleDAO(); //one/DBOracleDAO
	}
	@Bean("two") 
	public DBMYSQLDAO two() { //two/DBMYSQLDAO
		return new DBMYSQLDAO();
	}	

	@Bean("myService")
	public DBService service( List<DBDao> list) { //bytype 주입
		//one/DBOracleDAO
		//two/DBMYSQLDAO
		//service 에 저장
		return new  DBService(list);
	}


}

 

 

@SpringBootApplication
public class Boot05Di4CollectionList3Application {

	public static void main(String[] args) {
		ApplicationContext ctx = SpringApplication.run(Boot05Di4CollectionList3Application.class, args);
		DBService service = ctx.getBean("myService",DBService.class);
		List<DBDao> list= service.getList();
		
		
		for (DBDao dao : list) {
//			System.out.println(s);
			Map<String, String> map = dao.list();
			Set<String> keys= map.keySet();
			for (String key : keys) {
				System.out.println(key+"\t"+ map.get(key));	
				}
			}
	}

}

출력

one 홍길동3

two 홍길동4

one 홍길동1

two 홍길동2

 

map5

 

@Bean
	public Map<String, String> map1() {
		Map<String, String> map = new HashMap<>();
		map.put("one", "홍길동1");
		map.put("two", "홍길동2");
		return map; //one/DBOracleDAO
	}
	
	@Bean
	public Map<String, String> map2() {
		Map<String, String> map = new HashMap<>();
		map.put("one", "홍길동3");
		map.put("two", "홍길동4");
		return map; //one/DBOracleDAO
	}
	@Bean 
	public DBOracleDAO dao1( Map<String, String> map1) { //two/DBMYSQLDAO
		return new DBOracleDAO();
	}
	
	@Bean("two") 
	public DBMYSQLDAO dao2( Map<  String, String> map2) { //two/DBMYSQLDAO
		return new DBMYSQLDAO();
	}	

	@Bean("myService")
	public DBService service( List<String, DBDao> list) { //bytype 주입
		//one/DBOracleDAO
		//two/DBMYSQLDAO
		//service 에 저장
		return new  DBService(list);
	}

 

 

@Autowired

 

public class DBService {
    @Autowired //byType
	DBDao dao; // 변수의 접근 제어자를 private로 변경
//dao 인지 dao2인지 찾아서 들어감
    // 생성자의 매개변수를 통해 DBDao 주입
    public DBService(DBDao dao) {
        this.dao = dao;
    }

    // 메소드 이름 수정 및 리턴 타입 지정
    public List<String> getList() {
        return dao.list();
    }

    // 불필요한 생성자 제거
    public DBService() {
         super();
     }

    public DBDao getDao() {
        return dao;
    }

    // setter 메소드의 매개변수 이름 변경
    public void setDao(DBDao dao) {
        this.dao = dao;
    }

	public List<String> list() {
		// TODO Auto-generated method stub
		return this.dao.list();
	}
}

 

 

@Configuration
public class JavaConfig {

	@Bean
	public DBOracleDAO dao() {
		return new DBOracleDAO();
	}
//	@Bean
//	public DBMYSQLDAO dao2() {
//		return new DBMYSQLDAO();
//	}
	
	@Bean("myService") //// default Singletone
	public DBService service() { // by type service 에서 autowired
	//	DBService service = new  DBService();
		return new DBService();
	}

}

 

 

@SpringBootApplication
public class Boot05Di4CollectionListApplication {

	public static void main(String[] args) {

		ApplicationContext ctx = SpringApplication.run(Boot05Di4CollectionListApplication.class, args);
		DBOracleDAO dao = ctx.getBean("dao", DBOracleDAO.class);
		DBService service = ctx.getBean("myService", DBService.class);
		List<String> list = service.list();
		System.out.println(list);
    }
}

 

출력

[oracle 홍길동, oracle 이순신]

 

@Quarifier 로 id 부여

public class DBService {
    @Autowired //byType
    @Qualifier("xxx")
	DBDao dao;

 

출력

[oracle 홍길동, oracle 이순신]

 

config 에서 bean 생성을 안하고

@SpringBootApplication
public class Boot05Di4CollectionListApplication {

	public static void main(String[] args) {

		ApplicationContext ctx = SpringApplication.run(Boot05Di4CollectionListApplication.class, args);
		DBOracleDAO dao = ctx.getBean("DBOracleDAO", DBOracleDAO.class);
		DBService service = ctx.getBean("myService", DBService.class);
		List<String> list = service.list();
		System.out.println(list);
    }
}

 

 

@Service("myService")
public class DBService {
    @Autowired //byType
	DBDao dao; // 변수의 접근 제어자를 private로 변경
//dao 인지 dao2인지 찾아서 들어감
    // 생성자의 매개변수를 통해 DBDao 주입

 

 

@Repository
public class DBOracleDAO implements DBDao {

 

 

@autowired list

@Service("myService")
public class DBService {
	@Autowired
	DBDao dao;
	
	
public DBDao getDao() {
		return dao;
	}


public void setDao(DBDao dao) {
		this.dao = dao;
	}


public DBService(DBDao dao) {
		super();
		this.dao = dao;
	}
public List<String> list(){
	return dao.list();
}


}

 

 

@Repository
public class DBOracleDAO implements DBDao {
@Autowired
	List<String> list;
	public DBOracleDAO(List<String> list) {
		// TODO Auto-generated constructor stub
	}

	@Override
	public List<String> list() {
		// TODO Auto-generated method stub
		return Arrays.asList("oracle 홍길동", "oracle 이순신");
	}

}

 

 

public class DBMYSQLDAO implements DBDao {
	@Autowired
	List<String> list;

	public DBMYSQLDAO (List<String> list) {
		super();
		this.list =list;
	}
	@Override
	public List<String> list() {
		return list;
	}


}

 

 

@Configuration
public class JavaConfig {

	@Bean
	public List<String> list(){
		return Arrays.asList("홍길동1","홍길동2");
	}

2

oracle 홍길동

oracle 이순신

 

list2

@Repository
public class DBOracleDAO implements DBDao {
@Autowired
	List<String> list;
	public DBOracleDAO(List<String> list) {
		// TODO Auto-generated constructor stub
	}

	@Override
	public List<String> list() {
		// TODO Auto-generated method stub
		return Arrays.asList("oracle 홍길동", "oracle 이순신");
	}
}

 

@Repository
public class DBMYSQLDAO implements DBDao {
	@Autowired
	List<String> list;

	public DBMYSQLDAO (List<String> list) {
		super();
		this.list =list;
	}
	@Override
	public List<String> list() {
		return list;
	}
}

 

@Service("myService")
public class DBService {

	@Autowired
	List<DBDao> list;
	
public List<DBDao> getList() {
		return list;
	}


	public void setList(List<DBDao> list) {
		this.list = list;
	}
}

 

 

@SpringBootApplication
public class Boot05Di4CollectionList3Application {

	public static void main(String[] args) {
		ApplicationContext ctx = SpringApplication.run(Boot05Di4CollectionList3Application.class, args);
		DBService service = ctx.getBean("myService",DBService.class);
		List<DBDao> list= service.getList();
		System.out.println(list.size());
		for (DBDao dbDao : list) {
			System.out.println(dbDao.list());
		}
	}
}

 

 

@Autowired_map

 

@SpringBootApplication
public class Boot05Di4CollectionList3Application {

	public static void main(String[] args) {
		ApplicationContext ctx = SpringApplication.run(Boot05Di4CollectionList3Application.class, args);
		DBService service = ctx.getBean("myService",DBService.class);
		 Map<String, String> map = service.getList();
		Set<String> keys= map.keySet();
		        // Map의 키셋을 사용하여 전체 순회
		        for (String key : keys) {
						System.out.println(key);
						System.out.println(map.get(key));
					}
		        }
}

 

 

@Configuration
public class JavaConfig {
	@Bean
    public Map<String, String> map() {
        Map<String, String> map = new HashMap<>();
        map.put("one", "홍길동1");
        map.put("two", "홍길동2");
        return map;
    }
}

 

 

public interface DBDao {

public abstract Map<String, String> list();
}

 

 

public class DBMYSQLDAO implements DBDao {
	@Autowired
	 Map<String, String> map;

	public Map<String, String> getMap() {
		return map;
	}

	public void setMap(Map<String, String> map) {
		this.map = map;
	}

	@Override
	public Map<String, String> list() {
		// TODO Auto-generated method stub
		return this.map;
	}

}

 

 

@Repository
public class DBOracleDAO implements DBDao {
	@Autowired
	 Map<String, String> map;

	public Map<String, String> getMap() {
		return map;
	}

	public void setMap(Map<String, String> map) {
		this.map = map;
	}

	@Override
	public Map<String, String> list() {
		// TODO Auto-generated method stub
		return this.map;
	}

}

 

 

@Service("myService")
public class DBService {

	@Autowired
	DBDao dao;
	public DBDao getDao() {
		return dao;
	}
	public void setDao(DBDao dao) {
		this.dao = dao;
	}
	public Map<String, String> getList() {
		// TODO Auto-generated method stub
		return dao.list();
	}
}

 

one
홍길동1
two
홍길동2

 

'Daily Codig Reminder' 카테고리의 다른 글

boot-database  (0) 2024.03.11
component-scan  (0) 2024.03.11
springboot  (1) 2024.02.28
myBatis2  (0) 2024.02.16
@Reponsebody ,mybatis  (0) 2024.02.16