Большинство корпоративных приложений 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.