Вопрос по spring – Как определить бин Spring, используя аннотацию вместо XML?

15

Я определил в XML-файле конфигурации:

<bean id="bootstrap" class="com.package.Bootstrap"></bean>

это отлично работает

Ботсрап класс:

public class Bootstrap {

   @PostConstruct
   public void onServerStart() {
      System.out.println("PRINTSSSSSSSSSSSSSSSSSSS");
   }
}

Метод уволен.

Но как я могу избавиться от XML-части и аннотировать бутстрап как бин?

я имею

<mvc:annotation-driven />
<context:annotation-config /> 

а также

<context:component-scan base-package="com.package" />

Но яwas wondering what the annotation б должно быть то, что заменяет:

<bean id="bootstrap" class="com.package.Bootstrap"></bean>

Я не мог найти что-нибудь об этом в Интернете и весной документы :(

Ваш Ответ

2   ответа
18

вам понадобится аннотация стереотипа, например@Component.

Стереотипные аннотации

@ComponentError: User Rate Limit Exceeded@Named, @InjectError: User Rate Limit Exceededmkyong.com/spring3/…
Error: User Rate Limit Exceeded@Inject/@NamedError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededimportError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded<mvc:annotation-driven />Error: User Rate Limit Exceeded
4

Main.java

package the.test;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;

public class Main {

public static void main(String[] args) {

    AbstractApplicationContext aac = new AnnotationConfigApplicationContext(Person.class, Phones.class);
    Person person = aac.getBean(Person.class);
    System.out.println(person.getPhones().getPhoneOne());
    System.out.println(person.getPhones().getPhoneTwo());
    System.out.println(person.getSurname());
    System.out.println(person.getName());
    System.out.println(person.getAge());
    aac.close();

    }
}


Person.java

package the.test;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration

//you may use @ComponentScan("the.test") here and omit declaring 
//"Phone.class" in the main method 

public class Person {
private int age;
private String name;
private String surname;

private Phones phones;

public int getAge() {
    return age;
}
@Value("33")
public void setAge(int age) {
    this.age = age;
}

public String getName() {
    return name;
}

@Value("John")
public void setName(String name) {
    this.name = name;
}

public String getSurname() {
    return surname;
}

@Value("Due")
public void setSurname(String surname) {
    this.surname = surname;
}

public Phones getPhones() {
    return phones;
}
@Resource
public void setPhones(Phones phones) {
    this.phones = phones;
}
}


Phones.java

package the.test;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Phones {
private String PhoneOne;
private String PhoneTwo;

public String getPhoneOne() {
    return PhoneOne;
}

@Value("987654321")
public void setPhoneOne(String phoneOne) {
    PhoneOne = phoneOne;
}

public String getPhoneTwo() {
    return PhoneTwo;
}

@Value("123456")
public void setPhoneTwo(String phoneTwo) {
    PhoneTwo = phoneTwo;
}

}

это полностью основано на Spring Annotation и сделано на основе весны 4.2.5

Надеюсь, поможет.

Похожие вопросы