DI(Dependency Injection)


번역을 하면 '의존 주입' 이다. 이 단어를 이해하기 위해선 '의존' 이라는 단어의 뜻을 알아야한다.

네이버에 의존 을 검색하면

이렇게 나온다.

 

이 뜻을 Spring의 관점으로 해석하면  A클래스가 B클래스의 메소드를 실행한다. 로 정의할 수 있다.

 

다음은 코드의 예시이다.

//MemberDTO : 사용자 정보를 저장하는 객체
//MemberDao : 사용자 정보를 저장하기 위해 DB와 연결하는 클래스
public class MemberRegisterService{

    private MemberDao memberDao;
    
    ...
    public void regist(MemberDTO memberDTO){
    	memberDao.regist(memberDTO); 
    }
    ...
}

회원가입을 처리하는 코드이다. 

MemberRegisterService 클래스는 MemberDao 객체의 regist 메소드를 이용해 DB에 사용자 정보를 저장한다.

여기서 눈여겨볼 점은 MemberRegisterService 클래스가 사용자 정보를 저장하기 위해 MemberDao 클래스를 사용한다는 점이다. 

이렇게 한 클래스(MemberRegisterService)가 다른 클래스(MemberDao)의 메소드를 실행하는 것을 '의존' 이라고 한다.

 

특히 웹 개발에 흔히 사용하는 Spring MVC 패턴은 Model / View / Controller로 기능별로 구분을 해놓은 디자인 패턴

이기 때문에 Spring MVC 패턴을 이용해 웹페이지를 만들 때 의존성 주입은 거의 필수적라고 할 수 있다.

 

 

-틀린 내용 피드백은 언제나 환영합니다-😊

'Spring 개발..' 카테고리의 다른 글

HttpSession 값 가져오기(Object 객체)  (0) 2021.12.14

*프로젝트 만들면서 몰랐던거 복습.

 

HttpSession은 간단하게 말해서 입력한 정보들(로그인 사용자 정보)을 서버에 저장하는 기술이다.

 

Session값 저장은 이런 식으로 했다.

 

User DTO

public class User {
private String id;
    private String pw;
    private String name;
    private String nickname;
    private Date birth;
    private String email;
    
    //getter,setter,toString 생략
}

Controller

@PostMapping("/login")
public ModelAndView login(HttpSession session, User user){
    
    //로그인 과정 생략
    ......
    session.setAttribute("login", user);
    ......
    //생략
    

}

View단에서 입력받은 정보들을 User 객체에 저장하고 Attribute의 이름을 "login"으로 지정하고 session에 저장했다.

 

 

저장한 session을 출력해보면 저장이 잘 된 것을 알 수 있다.

출력 코드는 getAttribute("속성명");

System.out.print(session.getAttribute("login"));

여기서 "login" 속성에 User객체로 저장되어 있는 요소들 중 nickname을 가져와보자.

User user = (User)session.getAttribute("login");

Session 이름이 "login"인 속성을 (User)로 형변환 한 후 User 객체에 다시 집어넣어줬다.

그 후 User에 저장된 nickname을 리턴하면 된다.

System.out.println(user.getNickname());

잘 불러와진다.

 

끝~

'Spring 개발..' 카테고리의 다른 글

Spring DI(Dependency Injection)에 대해 알아보자.  (0) 2022.03.31

게시물 글쓰기 버튼

 

위의 사진처럼 form태그 안에 버튼을 2개 생성 후

돌아가기버튼은 게시물 리스트로, 하나는 게시물등록으로 설정하는 과정에서 발생한 에러?

분명 돌아가기버튼에 submit은 안넣었는데 돌아가기버튼을 클릭하면 submit으로 동작한다. 

 

<form:form modelAttribute = "board" action = "write.do" method = "post">
	<form:input path ~~/>
	<form:input path ~~/>
    
    <button type = "submit">등록</button> 
    <button onclick = "location.href='list.do'">돌아가기</button>
</form:form>

대충 이런식으로 코딩

 

검색해보니 한번에 알았다.

 

원인

form태그 속 사용되는 Button은 기본적으로 type이 submit으로 설정되있다는 것이였다.

 

해결방법

돌아가기의 type을 button으로 지정해줬다.

<form:form modelAttribute = "board" action = "write.do" method = "post">
	<form:input path ~~/>
	<form:input path ~~/>
    
    <button type = "submit">등록</button> 
    <button type = "button" onclick = "location.href='list.do'">돌아가기</button>
</form:form>

 

말끔히 해결!

'Spring 개발.. > 오류' 카테고리의 다른 글

Input[password] 안의 글씨가 안보이는 경우  (0) 2021.11.25

input[password]를 이용하여 입력받는데 안보이는 경우이다.

 

input[password] 속 내용물이 안보임.

 

원인

프로젝트에서 따로 설정한 폰트가 password의 ****를 지원해주지 못하는 것 같다.

 

해결방법

input[password] 의 글씨체를 따로 설정해놓기.

style 태그 안에 넣어주면 된다.

input[password]{
	font-family:'Malgun gothic', dotum, sans-serif;
}

이 구문을 넣어줄 경우 placeholder의 글씨체도 위에 설정한 글씨체로 바뀌므로

placeholder의 글씨체는 내가 원하는 글씨체로 안나온다.

다시 placeholder 글씨체를 다시 내가 원하는 글씨체로 바꿔준다.

마찬가지로 style 태그 안에 넣기.

::placeholder{
		font-family: 'OTWelcomeRA';
}

내가 쓰는 글씨체 - OTWelcomeRA (간단하고 이쁨)

 

 

결과

 

아주 잘된다!

 

+ Recent posts