1. 주석 사용 :
Spring의 구성 파일 ApplicationContext.xml에서 주석 스캔을 추가하십시오. 구성 항목은 의존성 주입을 구현하기 위해 지정된 패킷의 스캔을 구성합니다.
<? xml version = "1.0"alcoding = "utf-8"?> <span style = "font-size : 18px;"> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://www.w.w.org/2001/xmlsome" " xmlns : context = "http://www.springframework.org/schema/context"xmlns : aop = "http://www.springframework.org/schema/aop"xsi : schemalocation = "http://www.spramwork.org/schema http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sprging-context-3 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/aop/sprring-sp-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <aop : agnotation-config/> <contoration-config/> // 스캔 할 위치 </beans>
2. 일반적인 의견 :
@controller@service@autowired@requestMapping@cachlush@cacheflush@resource@prodestroy@repository@component (권장하지 않음)@scope@severattributes@inittbinder@requedrifier
3. 일반적으로 사용되는 스프링 주석 :
@Controller (프리젠 테이션 계층 용)
@Controller 주석을 사용하여 사용자 ActionAction을 식별 한 후 사용자 Actions는 관리를 위해 Spring 컨테이너에 양도되어야 함을 의미합니다. 스프링 컨테이너에는 "UserAction"이라는 동작이 있습니다. 이 이름은 useraction 클래스 이름을 기반으로합니다. 참고 : @Controller가 해당 값을 지정하지 않으면 【@controller】】이면 클래스 이름의 첫 글자에서 기본 콩 이름이 소문자입니다. 값을 지정하면 value @controller (value = "userAction")】 또는 【@controller ( "UserAction")】】를 지정하면 값을 Bean 이름으로 사용하십시오.
여기서 사용자 Action은 @Scope 주석도 사용합니다. @Scope ( "프로토 타입")는 동작의 범위가 프로토 타입으로 선언되었음을 의미합니다. 컨테이너의 스코프 = "프로토 타입"을 사용하여 각 요청에 스레드 안전 문제를 피하면서 각 요청에 따라 처리 할 수있는 별도의 조치가 있는지 확인할 수 있습니다. 스프링 기본 범위는 싱글 톤 모드 (scope = "Singleton")이며 액션 객체 만 생성합니다. 각 액세스는 동일한 동작 객체입니다. 데이터는 안전하지 않습니다. Struts2는 각 액세스가 다른 동작에 해당해야합니다. SCOPE = "프로토 타입"은 요청이있을 때 동작 객체가 생성되도록 할 수 있습니다.
@제어 장치
@Scope ( "프로토 타입") 공개 클래스 사용자 ActionAction은 BASEEACTION <USER> {}을 확장합니다.@ 서비스 (비즈니스 로직 계층에 사용)
@Service 주석은 인터페이스가 아닌 서비스 인터페이스의 구현 클래스에서 사용됩니다.
이것은 봄의 제어 역전을 매우 잘 반영합니다. 우리는 객체가 객체 자체를 인스턴스화하지 않고 객체에 적극적으로 의존하지 않고 대신 IOC가 관리하는 객체를 만들기 위해 컨테이너를 사용합니다. 예:
Action이 usererViceimpl을 사용하려는 경우 usererviceimpl의 인스턴스를 적극적으로 만들 필요가 없습니다. userviceimpl 인스턴스 생성이 스프링으로 넘겨졌습니다. Spring은 생성 된 usererviceimpl 인스턴스를 조치에 제공하며 작업을받은 후에 직접 사용할 수 있습니다. 동작은 usererviceimpl 인스턴스를 적극적으로 생성 한 직후에 사용될 수 있지만, Spring을 수동적으로 대기하여 userserviceimpl 인스턴스를 생성하기 전에 행동에 주입합니다. 이것은 "usererviceimpl"클래스에 대한 Action의 "Control"이 "반전"되었음을 보여줍니다. 이니셔티브는 내 자신의 손에있는 것으로 밝혀졌습니다. "usererviceimpl"클래스 인스턴스를 사용해야합니다. 나는 그것을 즉시 사용하기 위해 이니셔티브를 취할 수 있습니다. 그러나 이제 나는 "userviceimpl"클래스 인스턴스의 새로운 사례에 대한 주도권을 잡을 수 없습니다. 새로운 "userserviceimpl"클래스의 인스턴스의 힘은 Spring에 의해 제거되었습니다. Spring만이 "UserserviceImpl"클래스의 새로운 인스턴스 만 가능하며 Spring이 "Userse"클래스를 만들기 위해서만 기다릴 수 있습니다. rviceimpl "class"인스턴스 후, "spring"은 "usererviceimpl"클래스의 생성 인스턴스를 제공하여 "usererviceimpl"을 사용할 수 있도록 "usererviceimpl"을 사용할 수 있습니다. 이것은 "종속성 주입"이라고도 불리는 스프링 "의존적 주입"이라는 핵심 아이디어입니다. ASSERVICEIMPL은 행동에 의존하는 행동에 의존해야한다.
@Service ( "userService") public class userviceimpl은 userervice {}을 구현합니다.@ 저장소 (데이터 관리 용)
저자는이 도구를 사용하여 엔티티 레이어 데이터 모델과 Mapper를 반대로 생성 하므로이 주석이 사용되지 않지만 단순히 콩을 스프링 컨테이너에 주입하는 것입니다.
@repository (value = "userDao") public class userDaoimpl은 basedaoimpl <user> {}을 확장합니다.4. 일반적으로 사용되는 SpringMVC 주석 :
@autowired (유형에 따라 주입)
자동 조립 작업을 완료하기 위해 클래스 멤버 변수, 방법 및 생성자에 주석을 달았습니다. 간단히 말해서, 콩을 부르고 봄에 존재하고 컨테이너에서 관리된다고 말하는 것입니다.
Bean 유형에 따라 Spring Online 기사에서 @autowired 검색. 등록 유형은 고유해야합니다. 그렇지 않으면 예외 가보고됩니다.
@autowired 주석이 맵 유형에서 작동하는 경우, 맵의 키가 문자열 유형 인 경우 Spring은 컨테이너의 모든 유형을 해당 맵 값의 유형에 추가하고 Bean의 ID 또는 이름을 맵의 키로 사용합니다.
@autowired 또 다른 함수는 BeanFactory 유형, ApplicationContext 유형, ResourcelOder 유형, ApplicationEventPublisher 유형 및 MessageSource 유형에 주석이 달린 경우 Spring이 추가 작업없이 이러한 구현 클래스의 인스턴스를 자동으로 주입한다는 것입니다.
@autowired
Private IreportService ReportService;
@Resource (이름으로 주입)
@autowired와 유사하게 @Resource는 Bean의 이름에 따라 기본적으로 검색합니다. 발견되지 않으면 유형별로 검색됩니다.
@의지
개인 데이터 소스 데이터 소스; // 'DataSource'라는 콩 주입
@Resource (이름 = "DataSource")
@Resource (type = dataSource.class)
확장 질문 : 유형별 어셈블리와 이름 별 어셈블리는 무엇입니까?
유형은 스프링 컨테이너에 지정된 속성과 동일한 유형의 Bean이 있으면 속성이 자동으로 조립됩니다. 이 유형의 콩이 여러 개있는 경우 예외가 실행되며 유형별 자동 어셈블리를 사용할 수 없음을 지적합니다. 일치하는 콩이 발견되지 않으면 아무 일도 일어나지 않을 것입니다.
소위 이름은 속성 이름을 기반으로 자동 어셈블리를 의미합니다. 이 항목은 속성 이름과 정확히 동일한 스프링 컨테이너의 콩을 확인하고 자동 어셈블리를 수행합니다.
@requestmapping (지도 요청 주소)
요청 된 주소 매핑을 처리하는 데 사용되는 주석은 클래스 또는 방법에 사용할 수 있습니다. 클래스에서 사용하기 위해 클래스에서 해당 응답 요청을 나타내는 모든 방법은이 주소를 상위 경로로 취합니다.
6 가지 속성, 즉 다음과 같습니다.
1. 값, 방법;
값 : 요청의 실제 주소를 지정하고 지정된 주소는 URI 템플릿 모드에있을 수 있습니다 (나중에 설명).
방법 : 요청 된 메소드 유형, GET, POST, PIT, DELETE 등을 지정하십시오.
2. 소비, 생산
소비자 : Application/JSON, Text/HTML과 같은 요청을 처리하는 제출 유형 (콘텐츠 유형)을 지정합니다.
생성 : 반환 된 컨텐츠 유형을 지정하며 요청 요청 헤더의 (수락) 유형에 지정된 유형이 포함 된 경우에만 리턴됩니다.
3. 매개 변수, 헤더
매개 변수 : 메소드를 처리하기 전에 요청에 특정 매개 변수 값이 포함되어야하도록 지정합니다.
헤더 : 메소드가 요청을 처리하려면 요청에 지정된 헤더 값이 포함되어야하도록 지정합니다.
@controller@requestmapping ( "/bbtforum.do") public class bbtforumcontroller {@requestmapping (params = "method ="method = "listboardtopic") public String listboardtopic (int topicid, user user) {}}@requestMapping ( "/softpg/downsoftpg.do")@requestMapping (value = "/ajax/ajax/ajax/ajax로드. method = requestmethod.post) @requestmapping (value = "/osu/product/detail.do", params = { "modify = false"}, method = requestmethod.post)@requestparam (요청 매개 변수 값 가져 오기)
예를 들어, 브라우저의 액세스 주소는 다음과 같습니다. localhost : 8080/hello? id = 1000, 예를 들어 ID 값을 얻습니다.
@RestControllerPublic Class HelloController {@requestmapping (value = "/hello", method = requestMethod.get) public String sayhello (@requestparam ( "id") 정수 ID) {return "id :"+id; }}@PathVaribale (URL에서 데이터 가져 오기)
@RestControllerPublic Class HelloController {@requestmapping (value = "/hello/{id}", method = requestmethod.get) public String sayhello (@pathvariable ( "id") 정수 ID) {return "id :"+id; }}@ResponseBody (반환 유형 JSON)
기능 :이 주석은 적절한 httpmessageconverter를 통해 컨트롤러 메소드에 의해 리턴 된 객체를 지정된 형식으로 변환하고 응답 객체의 신체 데이터 영역에 쓰는 데 사용됩니다.
사용 시간 : 반환 된 데이터는 HTML 태그가있는 페이지가 아니지만 다른 형식 (예 : JSON, XML 등)의 데이터가 사용될 때 사용됩니다.
요약
위는 편집자가 소개 한 Spring SpringMVC의 일반적인 주석 분석입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!