
선 요점정리 :
1. @Configuration이 붙어있다면 IOC 컨테이너다.
2. @Component는 빈 객체를 만든다.
3. @Controller는 뷰를 연결하는 리모컨, @Repository는 데이터 베이스 연동 @Service는 자바 로직을 처리함.
4. @GetMapping는 주소창에서 단어를 입력하면 특정 뷰로 연결시켜줌
@Configuration : 스프링 빈 팩토리에서 쓰이는 어노테이션
말 그대로 Bean Factory를 만드는 어노테이션이다.
@Bean : 빈 객체를 생성하는것
@Component : 이 또한 빈 객체를 생성하는것.
다만 위의 두가지의 차이점을 언급하자면.....
@Configuration public class MyAppConfig { @Bean public MyBean myBean() { return new MyBean(); } }
@Component public class MyComponent { // 빈으로 등록되는 클래스의 내용 }
그리고 @Component 어노테이션은 일반적인 빈을 등록하는 데 사용됩니다. 필요에 따라 @Controller, @Service, @Repository 등의 세부적인 어노테이션으로 구분하여 사용할 수도 있습니다.
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } }
이 컨트롤러는 "/" 경로로 들어오는 요청을 처리.
home() 메소드는 "home"을 반환하며, 이것은 "home.jsp"라는 뷰(View)로 연결되도록 설정
@Service : 내부에서 자바 로직을 처리하는 역할
import org.springframework.stereotype.Service; @Service public class UserService { public String getUserById(int userId) { // 여기에서 데이터베이스 조회 등의 비즈니스 로직 처리 return "User: " + userId; } }
@Repository : 리포지토리 클래스는 데이터베이스와 상호작용하여 데이터를 조회하는 역할을 수행
import org.springframework.stereotype.Repository; @Repository public class UserRepository { public String getUserData(int userId) { // 여기에서 데이터베이스 조회 등의 데이터 처리 return "UserData for User: " + userId; } }
@Repository("userDao") public class UserDaoJdbc implements UserDao { @Autowired public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } private JdbcTemplate jdbcTemplate; (이하생략.)
위의 코드중에서 @Repository("userDao")는 userDao라는 빈의 고유한 식별자로 인식이 된다.
@Configuration public class DaoFactory { (중략) @Bean public UserDaoJdbc userDao() { UserDaoJdbc userDaoJdbc = new UserDaoJdbc(); userDaoJdbc.setDataSource(dataSource()); return userDaoJdbc; }
잘 보면 위의 UserDaoJdbc 클래스가 userDao의 객체로 인식이 되는것을 아래에서 볼 수가 있다.
@GetMapping("/calculator") :
@RequestMapping("/calculator") : 둘 다 Spring Framework에서 URL 매핑을 지정하기 위해 사용되는 어노테이션
예를들어 주소창에서 A/calculator라고 치면 해당하는 jsp파일을 호출시켜주도록 매핑하는 역할을 해줌. 클라이언트의 요청과 매핑될 수 있는 모든 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지정
@Controller public class CalculatorController { @GetMapping("/calculator") public String ShowLoginPage() { return "Calculator"; } }
