Mémorandum d'annotation de printemps
Depuis que j'apprends, je pense qu'il y a beaucoup de malentendus et de manque d'explication, alors j'apprécierais que quelqu'un le remarque. De plus, si vous savez quelque chose qui n'est pas mentionné et dont il est utile de se souvenir, veuillez commenter ~~ pleurer ~~.
Classer dans les endroits susceptibles d'être fréquemment utilisés (* Utilisé dans une classe spécifique, non disponible)
Controller
1. @Controller
2. @RequestMapping
3. @ResponseBody
4. @PostMapping
5. @GetMapping
6. @PathVariable
7. @RequestParam
8. @Autowired
9. @Value
Service
1. @Service
2. @Transactional
Repository
1. @Repository
Component
1. @Component
2. @Data
Controller Contrôlez la transition de l'écran (mappage des demandes) et appelez le service.
1-1. @Controller
ExampleController.java
@Controller
public class ExampleController {
//Omission
}
1-2. @RequestMapping(value="URL")
@ ResponseBody
si vous voulez renvoyer autre chose qu'une vue]@RequestMapping
(value="URL") ⇒ @RequestMapping
("URL")]@ RequestMapping
(value =" URL "method = RequestMethod.POST) @ RequestMapping
(value =" URL "method = {RequestMethod.POST, RequestMethod.GET})Vous pouvez spécifier l'en-tête HTTP.
Il semble. Pour plus de détails, reportez-vous à [Référence: méthode de mappage entre la méthode de traitement du contrôleur et la requête (URL, etc.)]
Vous pouvez spécifier des paramètres de demande. Il semble. (Voir référence pour plus de détails)
ExampleController.java
@Controller
@RequestMapping(value="/example")
public class ExampleController {
@RequestMapping("sample") //Http dans l'URL://xxxx:xxxx/example/Appelé lorsque l'échantillon est exécuté.(Chemin relatif)
public String sampleMethod() {
return "example/sample"; //Si la structure de répertoires est la structure par défaut, src/templates/example/sample.Renvoie du HTML
}
}
1-3. @ResponseBody
Lorsque vous voulez retourner une vue autre que la vue correspondant au chemin du modèle avec @ RequestMapping
. (Demande de mappage sans transition de page, etc.)
@ RequestMapping
est défini, donnez-le à la méthode que vous souhaitez renvoyer autre que la vue.ExampleController.java
@Controller
@RequestMapping(value="/example")
public class ExampleController {
@RequestMapping("/sample")
@ResponseBody
public String sampleMethod() {
return "sample"; //"sample"Renvoie la chaîne littérale.
}
}
1-4.@PostMapping
@ RequestMapping
(value =" URL ", method = RequestMethod.POST).ExampleController.java
@Controller
@RequestMapping("/example")
public class ExampleController {
@PostMapping("top")
public String top() {
//Omission
}
}
1-5. @GetMapping
@ RequestMapping
(value =" URL ", method = RequestMethod.GET).ExampleController.java
@Controller
@RequestMapping("/example")
public class ExampleController {
@GetMapping("top")
public String top() {
//Omission
}
}
1-6. @PathVariable
@ RequestParam
, mais intégré directement dans l'URL de la requête.ExampleController.java
@Controller
@RequestMapping("/example")
public class ExampleController {
//http://xxxx:xxxx/example/myPage/Appelé lorsqu'une demande telle que 12345 arrive
//La valeur PostMapping et userId sont les clés et la valeur URL est la valeur.
@PostMapping("myPage/{userId}")
public String myPage(
@PathVariable("userId") int argUserId
) {
//Omission
}
}
1-7. @RequestParam
Lorsque vous souhaitez obtenir la valeur de paramètre donnée à l'URL.
@ PathVariable
, mais avec un ajout supplémentaire à l'URL de la requête.ExampleController.java
@Controller
@RequestMapping("/example")
public class ExampleController {
//http://xxxx:xxxx/example/account?userId=Appelé lorsqu'une demande telle que 12345 arrive
//userId=12345 userId est la clé et 12345 est la valeur
@PostMapping("account")
public String top(
@RequestParam("userId") int argUserId
) {
//Omission
}
}
1-8.@Autowired
Utilisé lorsque vous souhaitez définir une instance pour une variable. (Il semble que ce n'est pas recommandé ... Recherche par injection de constructeur pour plus de détails)
@Autowired est une annotation attachée à une variable d'instance afin de définir un objet approprié sous Spring management sur une variable. Référence: [Spring] Extrait des bases de la DI en utilisant @Autowired et @Component
J'ai trouvé cette explication la plus simple à comprendre au cours de mes recherches. (* Les objets sous gestion Spring sont reconnus comme des composants.)
CalcService.java
@Service
public interface CalcService {
public int add(int x, int y);
}
CalcServiceImpl.java
@Service
public class CalcServiceImpl implements CalcService {
public int add(int x, int y) {
return x + y;
}
}
ExampleController.java
@Controller
@RequestMapping("/example")
public class ExampleController {
@Autowired
CalcService calcService;
@RequestMapping("calc")
public String printTotal() {
int x = 5;
int y = 20;
calcService.add(x, y);
//(Omis)
return "example/result";
}
}
1-9. @Value
Une sorte de fichier de propriété
sample.sampleId=12345
sample.samplePass=password
Sample.java
@Component
public class Sample {
@Value("${sample.sampleId}")
private int id;
@Value("${sample.samplePass}")
private String password;
}
2.Service Fourniture de traitement métier (Business Logic).
2-1. @Service
SampleService.java
@Service
public interface SampleService {
public void print();
}
SampleServiceImpl.java
@Service
public class SampleServiceImpl implements SampleService {
public void print() {
System.out.print("Hello.");
}
}
2-2. @Transactional
@ Transactional
(rollbackFor = Exception.class), la restauration est effectuée lorsqu'une exception d'Exception à sa classe enfant se produit.
Ci-dessous, cité à partir de la référenceConditions pour que @Transactional fonctionne ・ Doit être une méthode publique de la classe DI -Appelée directement depuis une autre classe ou un framework qui est DI
//en pensant
Repository Fournit des classes pour la couche d'accès aux données.
3-1. @Repository
SampleRepository.java
@Repository
public interface SampleRepository {
public List<String> search(String keyword);
}
SampleRepositoryImpl.java
@Repository
public class SampleRepositoryImpl implements SampleRepository {
public List<String> search(String keyword) {
//Traitement des opérations DB
}
}
Component
4-1. @Component
@ Controller
, @ Service
, @ Repository
. (Classe d'utilité, etc.)Account.java
@Component
public class Account {
private String id;
private String name;
//getter,abréviation du setter
}
4-2. @Data
Lorsque vous souhaitez réduire la quantité de code dans la classe Bean.
Account.java
@Component
@Data
public class Account {
private String accountId;
private String password;
private String firstName;
private String lastName;
private int age;
//getter,Il n'y a pas de description du setter, mais il peut être utilisé car il est implémenté en interne.
}