Spring 프레임워크 구동 원리
결합도는 낮추고 응집도는 높여야 한다.
응집도 높이기
AOP(Aspected Oriented Programming)
: 관점지향프로그래밍
결합도 낮추기
IOC(Inversion of Controll)
: 제어의 역전
원래는 객체 생성을 개발자가 했는데 스프링이 알아서 해줌
DI(Dependency Injection)
: 의존성 주입
의존성 주입을 통해 스프링이 객체를 만들어줌
스프링 컨테이너에 객체 만드는 법
1. 모든 클래스는 프로젝트의 기본 패키지 안에서 선언
-> 기본 패키지 안의 클래스들만 스프링이 자동으로 객체 생성 후보로 지정
2. 1번 조건을 부합하는 클래스 중에서 개발자가 객체 생성하려는 클래스에 객체 생성 어노테이션을 작성하면 객체가 생성됨
--객체 생성 어노테이션
@Component
@Controller
@Repository
@Service
ex)
@Controller
class StudentController{}
: 해당 클래스에 객체생성 어노테이션을 넣어주면
Student studentController = new Student(); 를 자동으로 생성됨
@Controller("stuCont")
: ()안은 생성될 객체명을 지정하며 객체명을 지정하지 않으면 클래스의 맨 앞글자를 소문자로 바꾼 객체가 생성됨
--객체 사용 어노테이션(DI)
@Autowired
: 자료형이 일치하는 객체를 가져옴
@Resource(name="")
: 객체명과 name이 일치하는 객체를 가져옴
ex)
@Component
class Member{}
@Autowired
private Member m;