您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)java中spring都有哪些注解,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
spring 注解可以減少xml配置;注釋配置相對(duì)于 XML 配置具有很多的優(yōu)勢(shì):它可以充分利用 Java 的反射機(jī)制獲取類(lèi)結(jié)構(gòu)信息,這些信息可以有效減少配置的工作。如使用 JPA 注釋配置 ORM 映射時(shí),我們就不需要指定 PO 的屬性名、類(lèi)型等信息,如果關(guān)系表字段和 PO 屬性名、類(lèi)型都一致,您甚至無(wú)需編寫(xiě)任務(wù)屬性映射信息——因?yàn)檫@些信息都可以通過(guò) Java 反射機(jī)制獲取。
使用注解之前要開(kāi)啟自動(dòng)掃描功能
其中base-package為需要掃描的包(含子包)。
<context:component-scan base-package="cn.test"/>
@Configuration把一個(gè)類(lèi)作為一個(gè)IoC容器,它的某個(gè)方法頭上如果注冊(cè)了@Bean,就會(huì)作為這個(gè)Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延遲初始化
@Service用于標(biāo)注業(yè)務(wù)層組件、
@Controller用于標(biāo)注控制層組件(如struts中的action)
@Repository用于標(biāo)注數(shù)據(jù)訪(fǎng)問(wèn)組件,即DAO組件。
@Component泛指組件,當(dāng)組件不好歸類(lèi)的時(shí)候,我們可以使用這個(gè)注解進(jìn)行標(biāo)注。
@Scope用于指定scope作用域的(用在類(lèi)上)
---------------jsr250----
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定銷(xiāo)毀方法(用在方法上)
@Resource 默認(rèn)按名稱(chēng)裝配,當(dāng)找不到與名稱(chēng)匹配的bean才會(huì)按類(lèi)型裝配。
----------
@DependsOn:定義Bean初始化及銷(xiāo)毀時(shí)的順序
@Primary:自動(dòng)裝配時(shí)當(dāng)出現(xiàn)多個(gè)Bean候選者時(shí),被注解為@Primary的Bean將作為首選者,否則將拋出異常
@Autowired 默認(rèn)按類(lèi)型裝配,如果我們想使用按名稱(chēng)裝配,可以結(jié)合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多個(gè)實(shí)例配合使用
@PostConstruct 初始化注解
@PreDestroy 摧毀注解 默認(rèn) 單例 啟動(dòng)就加載??
@Async異步方法調(diào)用,需要添加以下代碼:
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10"/> <property name="maxPoolSize" value="300"/> </bean> <task:annotation-driven/>
為了讓@Async注解能夠生效,還需要在Spring Boot的主程序中配置@EnableAsync
在Spring中,基于@Async標(biāo)注的方法,稱(chēng)之為異步方法;
這些方法將在執(zhí)行的時(shí)候,將會(huì)在獨(dú)立的線(xiàn)程中被執(zhí)行,
調(diào)用者無(wú)需等待它的完成,
即可繼續(xù)其他的操作。
@Async所修飾的函數(shù)不要定義為static類(lèi)型,這樣異步調(diào)用不會(huì)生效
@ComponentScan(basePackages = "com.xzc.")
@EnableAutoConfiguration
@SpringBootApplication
@PropertySource({"classpath:application.properties", "classpath:xzc.properties"})
@ImportResource("classpath:ws-client.xml")
@EnableRedisHttpSession
@EnableAspectJAutoProxy
@EnableCaching
@EnableAsync
@Configuration
@EnableScheduling 啟動(dòng)定時(shí)任務(wù)
@Entity注釋指名這是一個(gè)實(shí)體Bean
@SuppressWarnings注解?
1、 @PathVariable
當(dāng)使用@RequestMapping URI template 樣式映射時(shí), 即 someUrl/{paramId}, 這時(shí)的paramId可通過(guò) @Pathvariable注解綁定它傳過(guò)來(lái)的值到方法的參數(shù)上
@Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateController { @RequestMapping("/pets/{petId}") public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { // implementation omitted } }
上面代碼把URI template 中變量 ownerId的值和petId的值,綁定到方法的參數(shù)上。
若方法參數(shù)名稱(chēng)和需要綁定的uri template中變量名稱(chēng)不一致,需要在@PathVariable("name")指定uri template中的名稱(chēng)。
Spring 4.2新特性-使用@Order調(diào)整配置類(lèi)加載順序
----------------------------------------------------
lombok 簡(jiǎn)化java代碼注解 理解
lombok 注解:
lombok 提供的注解不多,可以參考官方視頻的講解和官方文檔。
Lombok 注解在線(xiàn)幫助文檔:http://projectlombok.org/features/index.
下面介紹幾個(gè)我常用的 lombok 注解:
@Data :注解在類(lèi)上;提供類(lèi)所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在屬性上;為屬性提供 setting 方法
@Getter:注解在屬性上;為屬性提供 getting 方法
@Log4j :注解在類(lèi)上;為類(lèi)提供一個(gè) 屬性名為log 的 log4j 日志對(duì)象
@NoArgsConstructor:注解在類(lèi)上;為類(lèi)提供一個(gè)無(wú)參的構(gòu)造方法
@AllArgsConstructor:注解在類(lèi)上;為類(lèi)提供一個(gè)全參的構(gòu)造方法
==================================
關(guān)于java中spring都有哪些注解就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。