網(wǎng)站首頁 編程語言 正文
類的注解
@Component
@Service? ? ? service層
@Controller? ? ? web層
@Repository? ? ?dao層
上面四個注解是功能一樣的,都可以實現(xiàn)對象的創(chuàng)建,只是習(xí)慣把 每個類用在對應(yīng)的層中,使開發(fā)更加清晰
基于注解方式 實現(xiàn)對象的創(chuàng)建
1.引入spring-aop-5.2.6.RELEASE.jar 包,在之前下載的spring-framework-5.2.6.RELEASE的libs中
2.在xml中開啟組件掃描
注意約束中添加了兩行
3.創(chuàng)建類? 在類聲明前@后面加需要的那四個類中的一個
package com.service;
import org.springframework.stereotype.Service;
@Service(value = "aa")
//如果按上面這么寫,則調(diào)用時候應(yīng)該這樣寫:
//Userservice userservice=context.getBean("aa",Usersrvice.class);
// 如果沒有寫value,調(diào)用的時候默認是類名的第一個字母小寫,應(yīng)該如下調(diào)用:
//Usersrvice usersrvice=context.getBean("userservice",Usersrvice.class);
public class Usersrvice {
public void print()
{
System.out.println("userservice的輸出");
}
public static void main(String[] args) {
System.out.println(" hello world");
}
}
調(diào)用正常寫即可?
import com.service.Usersrvice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Testdemo {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("demo1.xml");
Usersrvice usersrvice= context.getBean("usersrvice",Usersrvice.class);
System.out.println(usersrvice);
usersrvice.print();
}
}
4.開啟組件掃描的細節(jié)?
?選擇掃描哪些
?選擇哪些類不掃描
?對象作為另一個類的屬性的注解(對象屬性)
@Autowired//根據(jù)類型進行注入
import com.dao.Userdao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service(value = "aa")//service層的類應(yīng)該用@Service注解
//如果不寫參數(shù),則 Usersrvice usersrvice=context.getBean("aa",Usersrvice.class);
// 調(diào)用的時候默認是類名的第一個字母小寫
//Usersrvice usersrvice=context.getBean("userservice",Usersrvice.class);
public class Userservice {
@Autowired//根據(jù)類型進行注入
public Userdao userdao;
public void print()
{
System.out.println("userservice的輸出");
}
public static void main(String[] args) {
System.out.println(" hello world");
}
}
userdao類?
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository//dao層類的應(yīng)該用repository注解
public class Userdao {
public void print()
{
System.out.println("dao的方法執(zhí)行");
}
}
測試類
import com.service.Userservice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Testdemo {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("demo1.xml");
Userservice userservice= context.getBean("aa",Userservice.class);
// System.out.println(userservice);
userservice.userdao.print();
}
}
?輸出
@qualifier? 根據(jù)屬性名稱注入? 當我userdao是個接口,有好多實現(xiàn)類,那么根據(jù)類型注入就不行了,需要@qualifier進行輔助
import com.dao.Userdaoimpl1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service(value = "aa")
//如果不寫參數(shù),則 Usersrvice usersrvice=context.getBean("aa",Usersrvice.class);
// 調(diào)用的時候默認是類名的第一個字母小寫
//Usersrvice usersrvice=context.getBean("userservice",Usersrvice.class);
public class Userservice {
@Autowired//根據(jù)類型進行注入
@Qualifier("daoimpl1")
public Userdaoimpl1 userdao;
public void print()
{
System.out.println("userservice的輸出");
}
public static void main(String[] args) {
System.out.println(" hello world");
}
}
package com.dao;
import org.springframework.stereotype.Repository;
@Repository(value = "daoimpl1")//不寫默認就是首字母小寫userdaoimpl1
public class Userdaoimpl1 implements Userdao{
public void print()
{
System.out.println("dao的方法執(zhí)行");
}
}
?@Resource? 根據(jù)類型注入
@Resource(name="daoimpl1")根據(jù)名稱注入
import javax.annotation.Resource;//這個resource不是spring的官方包中的,所以不鼓勵用這個
@Service(value = "aa")
//如果不寫參數(shù),則 Usersrvice usersrvice=context.getBean("aa",Usersrvice.class);
// 調(diào)用的時候默認是類名的第一個字母小寫
//Usersrvice usersrvice=context.getBean("userservice",Usersrvice.class);
public class Userservice {
@Resource(name="daoimpl1")
public Userdaoimpl1 userdao;
public void print()
{
System.out.println("userservice的輸出");
}
public static void main(String[] args) {
System.out.println(" hello world");
}
}
@Value(value = "10")給普通的屬性賦值
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
@Repository(value = "daoimpl1")//不寫默認就是首字母小寫userdaoimpl1
public class Userdaoimpl1 implements Userdao{
@Value(value = "10")
public int aa;
public void print()
{
System.out.println("dao的方法執(zhí)行");
}
}
?去掉xml配置文件,使用注解 作為配置類(全注解開發(fā))
新建一個類config,用來替代xml文件
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = {"com"})//basepackages是尋找組件的范圍
// 相當于xml文件中的
public class Config {
}
將原來xml的位置換為config類
將對象換為AnnotationConfigApplicationContext
ApplicationContext context=new AnnotationConfigApplicationContext(Config.class);
import com.service.Userservice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Testdemo {
public static void main(String[] args) {
ApplicationContext context=new AnnotationConfigApplicationContext(Config.class);
Userservice userservice= context.getBean("aa",Userservice.class);
userservice.userdao.print();
}
}
原文鏈接:https://blog.csdn.net/sharesb/article/details/123458144
相關(guān)推薦
- 2022-12-22 一文帶你深入了解Go語言中切片的奧秘_Golang
- 2022-09-26 android Recycleview的側(cè)滑點擊刪除功能實現(xiàn)
- 2022-06-24 Python+matplotlib實現(xiàn)簡單曲線的繪制_python
- 2023-04-07 C#中將dateTimePicker初始值設(shè)置為空_C#教程
- 2022-11-28 C語言中g(shù)etchar()函數(shù)的用法小結(jié)_C 語言
- 2024-04-08 MAC更新和使用composer
- 2022-09-30 Go語言編譯原理之源碼調(diào)試_Golang
- 2022-12-19 C++?Boost?Coroutine使用協(xié)程詳解_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支