關(guān)于spring web-mvc衍生注解
衍生注解
在web開(kāi)發(fā)中,會(huì)根據(jù)webmvc的三層加購(gòu)分層,這時(shí)候每層都有相同一個(gè)不同的注解名字,但功能都相同。
- Service層:@Service用于標(biāo)注業(yè)務(wù)層組件
- controller層:@Controller用于標(biāo)注控制層組件
- dao層:@Repository用于標(biāo)注數(shù)據(jù)訪問(wèn)組件
- 組件歸類層,名字可以隨便定義,例如User層,@Component可以進(jìn)行標(biāo)注
注解:使用了注解之后,在容器中不需要注入bean,但要指定查找的的項(xiàng)目。
容器配置
<?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">
<!--指定注入時(shí)需要查找的項(xiàng)目-->
<context:component-scan base-package="com.yc.ch"/>
</beans>創(chuàng)建一個(gè)dao層和一個(gè)組件歸類層,文件樣式如下

User類
import com.yc.dao.Userdao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//該注釋表示注冊(cè)到容器中,直接由spring容器托管,
@Component
public class User {
//表示設(shè)置name的參數(shù)值為為Tom
//等價(jià)于 <property name="name" value="Tom"/>
@Value("Tom")
private String name;
private Userdao userdao;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Userdao getUserdao() {
return userdao;
}
public void setUserdao(Userdao userdao) {
this.userdao = userdao;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", userdao=" + userdao +
'}';
}
}
Userdao類
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
//該注釋表示注冊(cè)到容器中,直接由spring容器托管,
@Repository
public class Userdao {
//表示設(shè)置name的參數(shù)值為為游泳
//等價(jià)于 <property name="name" value="游泳"/>
@Value("游泳")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Userdao{" +
"name='" + name + '\'' +
'}';
}
}
spring容器配置
<?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">
<!--表示查找到com.yc下的所有層-->
<context:component-scan base-package="com.yc"/>
</beans>
創(chuàng)建測(cè)試類
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
User u=context.getBean("user",User.class);
System.out.println(u);
輸出
User{name=‘Tom’, userdao=null}
最終輸出的只有User類,但是Userdao層次卻直接顯示空,問(wèn)題是沒(méi)有把Userdao的bean引入到User的bean中,所以在測(cè)試User類時(shí)顯示空。解決:使用使用注解 @Autowired方式匹配到Userdao中
將User類修改
import com.yc.dao.Userdao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class User {
@Value("Tom")
private String name;
@Autowired
private Userdao userdao;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Userdao getUserdao() {
return userdao;
}
public void setUserdao(Userdao userdao) {
this.userdao = userdao;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", userdao=" + userdao +
'}';
}
}
修改spring容器配置
<?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.yc"/>
<context:annotation-config/>
</beans>
創(chuàng)建測(cè)試類,輸出
User{name=‘Tom’, userdao=Userdao{name=‘游泳’}}
@Component使用
@Component還可以加參數(shù),里面值相當(dāng)于注入bean中的id值,上面的案例默認(rèn)為User類的小寫(xiě)user,如果設(shè)置為@Component(value = “user2”)或者@Component(“user2”),則將測(cè)試類改寫(xiě)為
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
User u=context.getBean("user2",User.class);
System.out.println(u);
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)驗(yàn)證碼類生成中文驗(yàn)證碼
java實(shí)現(xiàn)的漢字輸入驗(yàn)證碼,主要包含兩個(gè)類,一個(gè)是生成驗(yàn)證碼,一個(gè)是判斷驗(yàn)證碼輸入是否正確,實(shí)現(xiàn)原理非常簡(jiǎn)單,將漢字和干擾線生成圖片并將漢字保存到session,前臺(tái)獲取每次生成驗(yàn)證碼圖片并用文本框值和session值比較,功能就怎么簡(jiǎn)單2014-01-01
springboot中自定義異常以及定制異常界面實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了springboot中自定義異常以及定制異常界面實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Spring boot如何配置請(qǐng)求的入?yún)⒑统鰠son數(shù)據(jù)格式
這篇文章主要介紹了spring boot如何配置請(qǐng)求的入?yún)⒑统鰠son數(shù)據(jù)格式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringBoot整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截的教程
我們寫(xiě)的任何一個(gè)項(xiàng)目,都應(yīng)該有安全防護(hù),不應(yīng)該讓這個(gè)項(xiàng)目進(jìn)行“裸奔”,否則很容易被別人進(jìn)行攻擊。而在SpringBoot環(huán)境中,其實(shí)可以很容易實(shí)現(xiàn)安全保護(hù),本文給大家介紹SpringBoot如何整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截,需要的朋友可以參考下2023-05-05

