2020. 8. 25. 20:11ㆍJava/Spring
- 스프링에서 기본으로 제공되지는 않지만 자바 플랫폼 공통 어노테이션인 JSR-250을 적용할 수 있다.
- 적용을 위해서는 반드시 라이브러리를 추가해야 한다.
1. 라이브러리 추가
위 사이트에 접속하여 jsr 250을 검색한다.
가장 위에 있는 항목을 선택한다.
javax.annotation-api를 선택한다.
버전을 선택한다.
아래 항목을 선택하여 복사한다.
복사한 항목을 pom.xml에 추가한다.
추가한 pom.xml 코드
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cookingcoding</groupId>
<artifactId>JSR250</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- xml에서 사용할 속성들 -->
<properties>
<!-- 자바버전 -->
<java-version>1.8</java-version>
<!-- 스프링 버전 -->
<org.springframework-version>5.1.9.RELEASE</org.springframework-version>
<!-- <org.springframework-version>4.3.25.RELEASE</org.springframework-version> -->
<org.slfrj-version>1.7.26</org.slfrj-version>
<ch.qos.logback-version>1.2.3</ch.qos.logback-version>
<javax.annotation-version>1.3.2</javax.annotation-version>
</properties>
<dependencies>
<!-- spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- slf4j -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slfrj-version}</version>
</dependency>
<!-- logback -->
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${ch.qos.logback-version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${javax.annotation-version}</version>
</dependency>
</dependencies>
</project>
2. 어노테이션 사용
1) @PostConstruct
@PostConstruct은 생성자 실행 후 바로 실행 될 메서드를 지정해준다.
TestBean1 클래스에 아래와 같이 작성하면 아래 메소드는 TestBean1의 생성자 호출 후 실행된다.
@PostConstruct
public void PostConstruct() {
System.out.println("PostConstruct!!");
}
2) @PreDestroy
@PreDestroy는 빈객체가 제거기 전에 실행되는 메서드를 정해준다.
아래 메서드는 해당 빈 객체가 삭제되기 직전에 실행된다.
@PreDestroy
public void preDestroy() {
System.out.println("preDestroy!!");
}
3) @Resource
@Resource는 name을 따라서 자동 주입을 해준다.
만약 같은 이름이 없다하면 @Resource(name="원하는 이름") 을 통해서 원하는 객체를 넣을 수 있다.
@Resource
public DataBean1 data1;
@Resource(name="data4")
public DataBean1 data2;
위 코드는 첫 data1은 BeanConfigClass에서 data1 이름을 가진 메서드를 찾아 객체를 주입하고,
두번째 data2는 BeanConfigClass에서 data4라는 이름을 가진 메서드를 찾아서 객체를 주입한다.
TestBean1.java
public class TestBean1 {
@Resource
public DataBean1 data1;
@Resource(name="data4")
public DataBean1 data2;
public TestBean1() {
System.out.println("TestBean1의 생성자");
}
@PostConstruct
public void PostConstruct() {
System.out.println("PostConstruct!!");
}
@PreDestroy
public void preDestroy() {
System.out.println("preDestroy!!");
}
public DataBean1 getData1() {
return data1;
}
public DataBean1 getData2() {
return data2;
}
}
BeanConfigClass.java
@Configuration
public class BeanConfigClass {
@Bean
public TestBean1 java1() {
return new TestBean1();
}
@Bean
public DataBean1 data4() {
return new DataBean1();
}
@Bean
public DataBean1 data1() {
return new DataBean1();
}
}
MainClass.java
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(BeanConfigClass.class);
TestBean1 t1 = ctx.getBean("java1",TestBean1.class);
System.out.println("t1=>"+t1.getData1());
System.out.println("t2=>"+t1.getData2());
ctx.close();
}
}
실행결과
'Java > Spring' 카테고리의 다른 글
Spring- Component Bean 기본 설정 (0) | 2020.08.27 |
---|---|
Spring - Component (0) | 2020.08.26 |
Spring - Annotation을 통한 Bean 설정 (0) | 2020.08.24 |
Spring - Java를 이용한 주입(생성자,getter,autowire) (0) | 2020.08.20 |
Spring - Java를 이용한 init-method, destroy-method (0) | 2020.08.19 |