[Java] Расскажите об общих аннотациях Spring


​1. @Component, указывающий компонент, размещенный в Spring, обычно используемый для маркировки классов бизнес-логики, отмеченные классы будут автоматически сканироваться и добавляться в контейнер Spring или могут быть заменены другими более конкретными аннотациями, такими как @Service, @Repositoryи@Controller

@Component
public class MyComponent {
    // ...
}


2. @Autowired, чтобы автоматически собрать компонент, управляемый Spring, который можно использовать в конструкторах, свойствах и методах установки, и Spring автоматически введет для него необходимые зависимости.Если есть несколько совпадающих классов реализации, вы можете использовать @Qualifier` для указать конкретный класс реализации.

@Component
public class MyComponent{
    private MyService myService;
    
    @Autowired
    public MyComponent(MyService myService) {
        this.myService = myService;
    }

    // ...
}


3. @Qualifier, когда интерфейс имеет несколько классов реализации, он используется для указания конкретного класса реализации

4. @Comfiguration, указывает класс конфигурации, который используется для определения Bean в контексте приложения Spring, и отмеченный класс будет автоматически сканироваться и добавлен контейнером Spring в контейнер

@Configuration
public class MyComfiguration {
   
    @Bean
    public MyService myService(){
        return new MyServiceImpl();
    }

    // ...
}


5. @Bean, используемый в классе конфигурации, представляет Spring Bean, отмеченный метод может возвращать объект, Spring автоматически добавит объект в контейнер и автоматически соберет его зависимости

@Configuration
public class MyComfiguration {
    
    @Bean
    public MyService myService(){
        return new MyServiceImpl();
    }

    // ...
}


6. @Value, используется для чтения значений свойств из конфигурационного файла.Отмеченные свойства могут быть базовых типов данных, строк, массивов, коллекций и т. д. Вы можете обращаться к свойствам в конфигурационном файле в виде ${property .имя} значение

@Configuration
public class MyComponent {
    
    @Value("${property.name}")
    private String myProperty;

    // ...
}


7. @RequestMappingопределить запрос сопоставления, который используется для сопоставления запроса с соответствующим методом, который можно использовать для классов и методов,

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, world!";
    }

    // ...
}


8. @Transactional, используемый для выполнения обработки транзакций в методе под управлением транзакциями Spring, отмеченный метод автоматически запускает транзакцию и автоматически откатывается, если возникает ошибка выполнения метода.

@Service
public class MyService {
    
    @Autowired
    private UserRepository userRepository;
    
    @Transactional
    public void createUser(User user) {
        userRepository.save(user);
    }
}


9. @PathVariable, используемый для сопоставления переменных в URL-адресе с параметрами метода, отмеченные параметры будут автоматически собраны с соответствующими значениями в URL-адресе.

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/users/{userId}")
    public User getUser(@PathVariable Long userId) {
        // ...
    }

    // ...
}




Можно добавить больше аннотаций Spring...

Guess you like

Origin blog.csdn.net/Your_Boy_Tt/article/details/130347116