겉바속촉
[spring] 생성자, setter 주입 각각 연습하기 본문
728x90
반응형
목표는 다음과 같아요
지난번처럼 생성자랑 setter 활용해서 시작해볼게요
점수가 필요해보이네요
java, jsp, spring 변수가 필요하고 점수니까 int라고 해줄게요
Score.java
package spring.day0625.quiz;
public class Score {
//멤버변수3개를 만든다(java, jsp, spring)
int java, jsp, spring;
//디폴트생성자
public Score() {
}
//3과목을 모두 인자로 받는 생성자를 만들기
public Score(int java, int jsp, int spring){
this.java=java;
this.jsp=jsp;
this.spring=spring;
}
//setter,getter 각각 받아오기
public int getJava() {
return java;
}
public void setJava(int java) {
this.java = java;
}
public int getJsp() {
return jsp;
}
public void setJsp(int jsp) {
this.jsp = jsp;
}
public int getSpring() {
return spring;
}
public void setSpring(int spring) {
this.spring = spring;
}
}
이제 이름과 나이가 들어가야하니까
Info 클래스를 하나 만들었습니다
그리고 얘는 접근이 힘들도록 private활용해서 string으로 선언할게요
Info.java
package spring.day0625.quiz;
public class Info {
//멤버변수 이름, 나이로 만든다
private String name;
private String age;
//디폴트생성자
public Info() {
}
//이름, 나이를 인자로 받는 생성자 만든다
Info(String name, String age){
}
//setter, getter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
위와 같이 클래스 두개 만들었으면
우리는 이제 출력문이 있는 클래스도 만들어야겠죠
이름은 MyData라고 지었습니다
첫번째 만들었던 score 클래스
두번째 만들었던 info 클래스를 가져와서 멤버 변수로 선언하는 것입니다.
그래서 이 값들을 주입할 생성자를 만들어주는 것이쥬
MyData.java
package spring.day0625.quiz;
public class MyData {
//Score, Info 클래스를 멤버변수로 선언
Score score;
Info info;
//Score, Info 를 각각 주입받는 생성자 만들기
public MyData(Score score, Info info) {
this.score=score;
this.info=info;
}
//출력메서드(writeData로 만들기)
//출력->이름,java,jsp,spring을 출력하는 메서드
public void writeData()
{
System.out.println("***결과출력***");
System.out.println("이름: "+info.getName());
System.out.println("나이: "+info.getAge());
System.out.println("java점수: "+score.getJava());
System.out.println("jsp점수: "+score.getJsp());
System.out.println("spring점수: "+score.getSpring());
}
}
이제 xml에서 값을 넣어주면 거의 끄읕!!
appQuiz.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- score1 강호동은 생성자 주입 -->
<bean name="score1" class="spring.day0625.quiz.Score">
<constructor-arg value="90"/>
<constructor-arg value="88"/>
<constructor-arg value="100"/>
</bean>
<!-- score2 유재석은 setter 주입 -->
<bean name="score2" class="spring.day0625.quiz.Score">
<property name="java" value="78"/>
<property name="jsp" value="88"/>
<property name="spring" value="55"/>
</bean>
<!-- info1 강호동은 생성자 주입 -->
<bean name="info1" class="spring.day0625.quiz.Info">
<constructor-arg value="강호동"/>
<constructor-arg value="32"/>
</bean>
<!-- info2 유재석은 setter 주입 -->
<bean name="info2" class="spring.day0625.quiz.Info">
<property name="name" value="유재석"/>
<property name="age" value="22"/>
</bean>
<!-- MyData1 -->
<bean name="my1" class="spring.day0625.quiz.MyData">
<constructor-arg ref="score1"/>
<constructor-arg ref="info1"/>
</bean>
<!-- MyData2 -->
<bean name="my2" class="spring.day0625.quiz.MyData">
<constructor-arg ref="score2"/>
<constructor-arg ref="info2"/>
</bean>
</beans>
마지막으로 메인까지 작성해주면 되겠네요:)
MyDataMain.java
package spring.day0625.quiz;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyDataMain {
public static void main(String[] args) {
ApplicationContext appQuiz=
new ClassPathXmlApplicationContext("spring/test2/appQuiz.xml");
MyData my1=(MyData)appQuiz.getBean("my1");
my1.writeData();
MyData my2=appQuiz.getBean("my2",MyData.class);
my2.writeData();
}
}
여러가지를 만들기 때문에 너무 헷갈리고 어렵네요ㅜㅜ 다음과 같이 전체적인 틀을 이해해주고서 하나씩 다시 자세하게 살펴봐주세요!^^!
컴파일
예제 하나 더 연습
MyOracle.java
package spring.day0625.ex4;
public class MyOracle {
private String driver;
private String url;
private String user;
private String password;
public MyOracle(String driver, String url) {
this.driver=driver;
this.url=url;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//toString메소드
//object로부터 상속받은 메소드라는 느낌
@Override
public String toString() {
// TODO Auto-generated method stub
return "[MyOracle] \n driver: "+driver+"\n url: "+url
+"\n user: "+user+"\n password: "+password;
}
}
OracleContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<bean id="db" class="spring.day0625.ex4.MyOracle">
<!-- 2개의 생성자 주입 -->
<constructor-arg>
<value>oracle.jdbc.driver.OracleDriver</value>
</constructor-arg>
<constructor-arg>
<value>jdbc:oracle:thin:@localhost:1521:XE</value>
</constructor-arg>
<!-- 2개의 setter 주입 -->
<property name="user" value="gutba"/>
<property name="password" value="sokchock"/>
</bean>
</beans>
OracleMain.java
package spring.day0625.ex4;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class OracleMain {
public static void main(String[] args) {
ApplicationContext app=
new ClassPathXmlApplicationContext("oracledb/oracleContext.xml");
MyOracle my=(MyOracle)app.getBean("db");
//System.out.println(my.toString());
System.out.println(my); //toString으로 만든 메서드는 my만 쳐도 출력된다.
}
}
컴파일
728x90
반응형
'IT일기(하반기) > SPRING' 카테고리의 다른 글
[spring] 어노테이션 @Resource 연습 (0) | 2020.06.25 |
---|---|
[spring] 어노테이션 연습하기 (0) | 2020.06.25 |
[spring] 생성자 + setter까지 주입해보기 (0) | 2020.06.25 |
[spring] 생성자 주입해보기 (0) | 2020.06.25 |
[Spring] 자바와 스프링의 차이점 알아보기 (0) | 2020.06.25 |