Большинство корпоративных приложений Java управляются аннотациями. Java-аннотации содержат множество различных функций. Здесь я представлю некоторые из самых популярных аннотаций и объясню, за что они отвечают, чтобы убедиться, что вы понимаете аннотации, с которыми вы уже знакомы, и познакомлю вас с теми, которые вы, возможно, не знаете.
Инверсия управления и инъекция зависимостей
Эти два шаблона отвечают за инициализацию компонента. IOC инициализирует компоненты и определяет зависимости между ними, а DI позволяет использовать их в вашем классе без вызова конструктора . С ними можно сделать гораздо больше, но ради краткости мы на этом остановимся.
МОК и ДИ в Spring Boot
Джава
1
2
public class Config {
3
4
public Service service()
5
{
6
return new ServiceImplementation();
7
}
8
}
Джава
xxxxxxxxxx
1
2
public class YourClass {
3
4
private Service service;
5
public void printData(){
7
System.out.println(service.getData());
8
}
9
}
В первом блоке кода мы определяем реализацию, которую мы используем для Service
интерфейса. Внизу мы Service
внедряем реализацию интерфейса с помощью внедрения зависимости поля. Так, аннотации @Configuration
, , , отвечают за МОК . отвечает за внедрение зависимости. Весна - не единственная структура IOC и DI. @Bean
@Component
@Autowired
Самые популярные аннотации IOC и DI:
- Java EE :
@Alternative
,@Qualifier
,@Inject
,@Named
. - Google Guice :
@Inject
,@Named
(не слишком много , потому что он использует привязку функции , а). - Dagger :
@Provides
,@Module
,@Component
,@Inject
,@Named
. - Spring :,
@Autowired
@Qualifier, @Component, @Bean.
Вам также может понравиться:
Как аннотации работают в Java?
JPA (Java Persistent Api)
JPA аннотации объявляют связь между приложением и базой данных. Вместо запросов JDBC JPA предоставляет доступ с использованием классов сущностей. Например:
Джава
1
2
name = "employees", schema = "testdb") (
3
public class EmployeesEntity {
4
private int empNo;
5
private Date birthDate;
6
private String firstName;
7
8
name = "emp_no", nullable = false) (
9
public int getEmpNo() {
10
return empNo;
11
}
12
13
name = "first_name", nullable = false, length = 14) (
14
public String getFirstName() {
15
return firstName;
16
}
17
18
name = "birth_date", nullable = false) (
19
public Date getBirthDate() {
20
return birthDate;
21
}
22
}
Теперь взглянем на соответствующую схему таблицы SQL:
MySQL
xxxxxxxxxx
1
CREATE TABLE `employees` (
2
`emp_no` int NOT NULL,
3
`birth_date` date NOT NULL,
4
`first_name` varchar(14) NOT NULL,
5
PRIMARY KEY (`emp_no`)
6
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
Как видите, класс использует аннотацию @Table для сопоставления с именем таблицы и аннотацию @Column для сопоставления со столбцами.
Самые популярные аннотации jpa:
@Entity
@Table
@Column
@Id
@GeneratedValue
@OneToOne
@OneToMany
@ManyToMany
@Basic
@Transient
ОСТАЛЬНЫЕ
REST - это самое популярное слово для описания спецификаций jax-rs и Java EE (спецификаций веб-сервисов). Стандарт jax-rs стал значительным улучшением по сравнению с сервлетами. Давайте посмотрим на пример с Spring.
Джава
xxxxxxxxxx
1
"/resource") (
2
public ResponseEntity<String> simpleRestGetMethod( String someParam) {
3
return ResponseEntity.ok().build();
4
}
В этом примере @GetMapping
сопоставляет HTTP-запросы с URL-адресом «/ resource» с simpleRestGetMethod
. @RequestParam
также передается для преобразования атрибута из тела запроса в строковую переменную someParam.
Самые популярные аннотации отдыха:
- Java EE :
@Path
,@POST
,@PUT
,@GET
,@Produces
,@Consumes
,@PathParam
,@QueryParam
. - Весна :
@RequestMapping
,@PostMapping
,@PutMapping
,@GetMapping
,@Produces
,@Consumes
,@PathParam
,@QueryParam
.