使用Spring框架開發,會發現有許多註解可以使用,有助於程式開發更加順暢且易於維護,以下是常見且很常使用的註解,一起來認識吧!不過要注意,這些註解大多是源自於Spring Framework,並非Spring Boot專有唷。
@Controller
用來標註傳統的Web應用程式,處理HTTP請求,返回的內容為視圖名稱,必須有對應的模板渲染響應,例如JSP、Thymeleaf,簡單來說是用此來生成HTML頁面。
@Controller
public class WebController {
@GetMapping("/welcome")
public String welcomePage(Model model) {
model.addAttribute("message", "Hello Spring!");
return "welcome"; // 會返回對應的Thymeleaf
}
}
@RestController
同樣是註解Web應用程式,不同的是,這是屬於前後端分離設計,用來處理API請求與響應,後端返回的是JSON或XML這類格式,搭配其他註解,如@ResponseBody,可以直接返回數據,而非視圖名稱。
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/members")
public List<Member> getAll() {
return memberService.getAll();
}
}
這些註解能夠讓Spring自動掃描並管理Bean,將其註冊到Spring容器。前述Controller也是屬於此。
@Component
屬於通用註解,是所有Spring物件的基礎註解,當此類需要讓Spring管理,但不屬於特定的層,就可以使用此註解。其他層的同類型註解都是繼承自@Component。
@Component
public class MyComponent {
public void doSomething() {
System.out.println("我是Spring管理的Bean");
}
}
@Service
同前述,需要讓Spring管理的類,專門標示於服務層,主要封裝業務邏輯。
@Service
public class MemberService {
public List<Member> getAll() {
// 業務邏輯
return memberRepository.findAll();
}
}
@Repository
同前述,需要讓Spring管理的類,專門標示數據訪問層。Spring 會自動處理常見的例外狀況(像是SQL錯誤)。
@Repository
public class MemberRepository {
public List<Member> findAll() {
// 查詢資料庫
return entityManager.createQuery("SELECT m FROM Member m").getResultList();
}
}
@Autowired
用於依賴注入,能自動將Spring容器中的Bean注入,簡化依賴關係管理,不用手動new物件或配置對象。可注入到屬性、構造方法或setter方法中。
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
public List<Member> getAll() {
return memberRepository.findAll();
}
}
這些是Spring Boot專用註解,讓啟動跟配置變得更簡單。
@SpringBootApplication
表示此為Spring Boot入口點,集結了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan,會自動進行配置與初始化,用以啟動Spring Boot程式。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@EnableAutoConfiguration
讓Spring Boot根據已添加的庫來自動配置,例如有Spring Web依賴,它就會自動配置Web Server,不需要手動配置。
@EnableAutoConfiguration
public class MyApplication {
// 自動配置
}
@RestClientTest
用於測試REST客戶端,能自動配置與簡化測試環境。
@RestClientTest(MyClient.class)
public class MyClientTest {
@Autowired
private MyClient client;
@Test
public void testClient() {
// 測試REST客戶端
}
}
綜合上述,Spring、Spring Boot提供許多強大註解,只要了解並善用它們,在開發上就能更加輕鬆!