spring
ApplicationContext 설정
수색…
비고
Spring은 ApplicationContext
를 구성하는 것이 매우 유연하도록 만들었습니다. 각 유형의 구성을 적용하는 데는 여러 가지 방법이 있으며, 모두 혼합하여 잘 매치 할 수 있습니다.
Java 구성 은 명시 적 구성의 한 형태입니다. @Configuration
어노테이션이 @Configuration
클래스는 ApplicationContext
의 일부가 될 bean을 지정하고 각 bean의 종속성을 정의하고 연결하는 데 사용됩니다.
Xml 구성 은 명시 적 구성의 한 형태입니다. 특정 xml 스키마는 ApplicationContext
의 일부가 될 빈을 정의하는 데 사용됩니다. 이 동일한 스키마는 각 bean의 종속성을 정의하고 연결하는 데 사용됩니다.
자동 와이어 링 은 자동 구성의 한 형태입니다. 어떤 주석은 어떤 bean이 ApplicationContext
의 일부인지를 확립하기 위해 클래스 정의에서 사용되며, 다른 주석은 이들 bean의 종속 관계를 연결하는 데 사용됩니다.
Java 구성
자바 설정은 전형적으로 @Configuration
어노테이션을 클래스에 적용하여 클래스가 bean 정의를 포함하도록 제안한다. Bean 정의는 @Bean
어노테이션을 객체를 반환하는 메소드에 적용하여 지정됩니다.
@Configuration // This annotation tells the ApplicationContext that this class
// contains bean definitions.
class AppConfig {
/**
* An Author created with the default constructor
* setting no properties
*/
@Bean // This annotation marks a method that defines a bean
Author author1() {
return new Author();
}
/**
* An Author created with the constructor that initializes the
* name fields
*/
@Bean
Author author2() {
return new Author("Steven", "King");
}
/**
* An Author created with the default constructor, but
* then uses the property setters to specify name fields
*/
@Bean
Author author3() {
Author author = new Author();
author.setFirstName("George");
author.setLastName("Martin");
return author;
}
/**
* A Book created referring to author2 (created above) via
* a constructor argument. The dependency is fulfilled by
* invoking the method as plain Java.
*/
@Bean
Book book1() {
return new Book(author2(), "It");
}
/**
* A Book created referring to author3 (created above) via
* a property setter. The dependency is fulfilled by
* invoking the method as plain Java.
*/
@Bean
Book book2() {
Book book = new Book();
book.setAuthor(author3());
book.setTitle("A Game of Thrones");
return book;
}
}
// The classes that are being initialized and wired above...
class Book { // assume package org.springframework.example
Author author;
String title;
Book() {} // default constructor
Book(Author author, String title) {
this.author = author;
this.title= title;
}
Author getAuthor() { return author; }
String getTitle() { return title; }
void setAuthor(Author author) {
this.author = author;
}
void setTitle(String title) {
this.title= title;
}
}
class Author { // assume package org.springframework.example
String firstName;
String lastName;
Author() {} // default constructor
Author(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
String getFirstName() { return firstName; }
String getLastName() { return lastName; }
void setFirstName(String firstName) {
this.firstName = firstName;
}
void setLastName(String lastName) {
this.lastName = lastName;
}
}
Xml 구성
Xml 설정은 대개 xml 파일 내에서 Spring의 특정 beans
스키마를 사용하여 bean을 정의함으로써 이루어진다. 루트 beans
요소 아래에서 일반적인 bean 정의는 bean
하위 요소를 사용하여 수행됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- An Author created with the default constructor
setting no properties -->
<bean id="author1" class="org.springframework.example.Author" />
<!-- An Author created with the constructor that initializes the
name fields -->
<bean id="author2" class="org.springframework.example.Author">
<constructor-arg index="0" value="Steven" />
<constructor-arg index="1" value="King" />
</bean>
<!-- An Author created with the default constructor, but
then uses the property setters to specify name fields -->
<bean id="author3" class="org.springframework.example.Author">
<property name="firstName" value="George" />
<property name="lastName" value="Martin" />
</bean>
<!-- A Book created referring to author2 (created above) via
a constructor argument -->
<bean id="book1" class="org.springframework.example.Book">
<constructor-arg index="0" ref="author2" />
<constructor-arg index="1" value="It" />
</bean>
<!-- A Book created referring to author3 (created above) via
a property setter -->
<bean id="book1" class="org.springframework.example.Book">
<property name="author" ref="author3" />
<property name="title" value="A Game of Thrones" />
</bean>
</beans>
// The classes that are being initialized and wired above...
class Book { // assume package org.springframework.example
Author author;
String title;
Book() {} // default constructor
Book(Author author, String title) {
this.author = author;
this.title= title;
}
Author getAuthor() { return author; }
String getTitle() { return title; }
void setAuthor(Author author) {
this.author = author;
}
void setTitle(String title) {
this.title= title;
}
}
class Author { // assume package org.springframework.example
String firstName;
String lastName;
Author() {} // default constructor
Author(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
String getFirstName() { return firstName; }
String getLastName() { return lastName; }
void setFirstName(String firstName) {
this.firstName = firstName;
}
void setLastName(String lastName) {
this.lastName = lastName;
}
}
자동 와이어 링
autowiring을 클래스는 콩 될 것 무엇을 지정하는 sterotype 주석을 사용하여 수행됩니다 ApplicationContext
하고 사용 Autowired
와 Value
콩 종속성을 지정하는 주석을. autowiring의 유일한 부분은 외부 ApplicationContext
정의가 없다는 것입니다. 모든 Bean 자체의 클래스 내에서 이루어지기 때문입니다.
@Component // The annotation that specifies to include this as a bean
// in the ApplicationContext
class Book {
@Autowired // The annotation that wires the below defined Author
// instance into this bean
Author author;
String title = "It";
Author getAuthor() { return author; }
String getTitle() { return title; }
}
@Component // The annotation that specifies to include
// this as a bean in the ApplicationContext
class Author {
String firstName = "Steven";
String lastName = "King";
String getFirstName() { return firstName; }
String getLastName() { return lastName; }
}
ApplicationContext를 부트 스트랩하기
Java 구성
구성 클래스는 응용 프로그램의 클래스 경로에 있고 응용 프로그램 기본 클래스에서 볼 수있는 클래스 여야합니다.
class MyApp {
public static void main(String[] args) throws Exception {
AnnotationConfigApplicationContext appContext =
new AnnotationConfigApplicationContext(MyConfig.class);
// ready to retrieve beans from appContext, such as myObject.
}
}
@Configuration
class MyConfig {
@Bean
MyObject myObject() {
// ...configure myObject...
}
// ...define more beans...
}
XML 구성
구성 XML 파일은 응용 프로그램의 클래스 경로에만 있어야합니다.
class MyApp {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext appContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
// ready to retrieve beans from appContext, such as myObject.
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- applicationContext.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myObject" class="com.example.MyObject">
<!-- ...configure myObject... -->
</bean>
<!-- ...define more beans... -->
</beans>
자동 와이어 링
Autowiring은 어노테이션 된 빈 ( @Component
)을 스캔 할 기본 패키지를 알아야합니다. 이것은 #scan(String...)
메소드를 통해 지정됩니다.
class MyApp {
public static void main(String[] args) throws Exception {
AnnotationConfigApplicationContext appContext =
new AnnotationConfigApplicationContext();
appContext.scan("com.example");
appContext.refresh();
// ready to retrieve beans from appContext, such as myObject.
}
}
// assume this class is in the com.example package.
@Component
class MyObject {
// ...myObject definition...
}