iT邦幫忙

2024 iThome 鐵人賽

DAY 9
1

使用Spring框架開發,會發現有許多註解可以使用,有助於程式開發更加順暢且易於維護,以下是常見且很常使用的註解,一起來認識吧!不過要注意,這些註解大多是源自於Spring Framework,並非Spring Boot專有唷。

web註解

@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();
    }
}

註冊為Bean的註解

這些註解能夠讓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專有註解

這些是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提供許多強大註解,只要了解並善用它們,在開發上就能更加輕鬆!


上一篇
誤會大了—JPA不是ORM框架
下一篇
後端溝通無礙—RESTful API
系列文
從卡關到通關的Spring Boot 腦內風暴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言