Java之Spring註解開發案例詳解
- 在Spring4之後,要使用註解開發,必須要保證aop的包導入瞭
- 使用註解需要導入context約束,增加註解的支持!
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--指定要掃描的包,這個包下的註解就會生效--> <context:component-scan base-package="com.example.springannotation" /> <context:annotation-config></context:annotation-config> <!-- <bean id="cat" class="com.example.springannotation.dao.Cat"/> <bean id="people" class="com.example.springannotation.dao.People"/>--> </beans>
註解的支持:
//@Component 等價於<bean id="pepople" class="com.example.springannotation.dao.People" /> @Component public class People { @Autowired(required = false) @Value("1235") //相當<property name="id " value="1235"/> private int id; @Autowired(required = false) private String name ="ming"; @Value("qing") //相當<property name="name " value="qing"/> public void setName(@Nullable String name) { this.name = name; } }
衍生的註解
@Component有幾個衍生註解,我們在web開發中,會按照mvc三層架構分層!
- dao 【@Repository】
- service【@Service】
- controller【@Controler】
這四個註解功能都是一樣的,都是代表將某個類註冊到Spring中,裝配Bean。
@Scope("singleton") //singleton:標識單例模式,prototype:標識原型模式 、request:標識請求模式、session:標識會話模式
xml 與註解:
- xml更加萬能,適用於任何場合!維護簡單方便。註解不是自己類使用不瞭,維護相對復雜!
xml與註解最佳實踐:
- xml 用來管理bean;
- 註解隻負責完成屬性的註入;
- 我們在使用的過程中,隻需要註意一個問題:必須讓註解生效,就需要開啟註解的支持
<!--指定要掃描的包,這個包下的註解就會生效--> <context:component-scan base-package="com.example.springannotation" /> <context:annotation-config></context:annotation-config>
JAVA的方式配置Spring
- @Configuration 這個也會spring容器托管,註冊到容器中,因為他本來就是一個Component,
- @Configuration代表這是一個配置類,就和我們之前看的beans.xml
// 配置類 代替 beans.xml import com.example.springannotation.dao.Cat; import com.example.springannotation.dao.People; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Configuration @ComponentScan("com.example.springannotation") @Import(WwConfig.class) //引入第二個配置 public class AppConfig { //註朋一個bean 相當於當於我們之前寫的一個bean標簽 //這個方法的名字,就相當於bean標簽中的id屬性 //這個方法的返回價,就和當瞭bean標簽中的class屬性 @Bean public People getPeople(){ return new People(); } @Bean public Cat getCat(){ return new Cat(); } } import org.springframework.context.annotation.Configuration; @Configuration public class WwConfig { }
//測試類 import com.example.springannotation.config.AppConfig; import com.example.springannotation.dao.People; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @SpringBootTest class SpringannotationApplicationTests { @Test void contextLoads() { 如果完全使用瞭配置類方式做, // 我們就隻能通過 AnnotationConfig 上下文來獲取容器,通過配置類的class對象加載! ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); People people = (People) context.getBean("getPeople"); System.out.println(people.toString()); } }
到此這篇關於Java之Spring註解開發案例詳解的文章就介紹到這瞭,更多相關Java之Spring註解開發內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!