스프링 Annotation 정리1

Lucy in the Sky with Diamond·2023년 8월 3일

스프링 정리

목록 보기
1/5
post-thumbnail

선 요점정리 :
1. @Configuration이 붙어있다면 IOC 컨테이너다.
2. @Component는 빈 객체를 만든다.
3. @Controller는 뷰를 연결하는 리모컨, @Repository는 데이터 베이스 연동 @Service는 자바 로직을 처리함.
4. @GetMapping는 주소창에서 단어를 입력하면 특정 뷰로 연결시켜줌

I.빈 팩토리를 만드는 어노테이션

@Configuration : 스프링 빈 팩토리에서 쓰이는 어노테이션
말 그대로 Bean Factory를 만드는 어노테이션이다.

II.빈 객체를 만드는 어노테이션

@Bean : 빈 객체를 생성하는것
@Component : 이 또한 빈 객체를 생성하는것.
다만 위의 두가지의 차이점을 언급하자면.....

@Configuration
public class MyAppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}
@Component
public class MyComponent {
    // 빈으로 등록되는 클래스의 내용
}

@Bean은 메소드 단위에서 실행이 되며 @Component는 클래스 단위에서 실행이 된다.

그리고 @Component 어노테이션은 일반적인 빈을 등록하는 데 사용됩니다. 필요에 따라 @Controller, @Service, @Repository 등의 세부적인 어노테이션으로 구분하여 사용할 수도 있습니다.

III.@Component속 세부적인 어노테이션

  1. @Controller : 웹 요청을 처리하는 어노테이션.
    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)로 연결되도록 설정

  1. @Service : 내부에서 자바 로직을 처리하는 역할

    import org.springframework.stereotype.Service;
    @Service
    public class UserService {
        public String getUserById(int userId) {
            // 여기에서 데이터베이스 조회 등의 비즈니스 로직 처리
            return "User: " + userId;
        }
    }
  2. @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의 객체로 인식이 되는것을 아래에서 볼 수가 있다.

Mapping을 하는 어노테이션

@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";
	}
}

0개의 댓글