網(wǎng)站首頁 編程語言 正文
類的注解
@Component
@Service? ? ? service層
@Controller? ? ? web層
@Repository? ? ?dao層
上面四個注解是功能一樣的,都可以實現(xiàn)對象的創(chuà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")
//如果按上面這么寫,則調用時候應該這樣寫:
//Userservice userservice=context.getBean("aa",Usersrvice.class);
// 如果沒有寫value,調用的時候默認是類名的第一個字母小寫,應該如下調用:
//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");
}
}
調用正常寫即可?
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層的類應該用@Service注解
//如果不寫參數(shù),則 Usersrvice usersrvice=context.getBean("aa",Usersrvice.class);
// 調用的時候默認是類名的第一個字母小寫
//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層類的應該用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);
// 調用的時候默認是類名的第一個字母小寫
//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);
// 調用的時候默認是類名的第一個字母小寫
//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
相關推薦
- 2022-09-08 python?字典生成樹狀圖的實例_python
- 2022-08-19 淺談tensorflow與pytorch的相互轉換_python
- 2022-07-15 Android自定義Camera實現(xiàn)拍照小功能_Android
- 2023-04-26 C++利用伴隨陣法實現(xiàn)矩陣求逆_C 語言
- 2022-05-15 Python?OpenCV使用dlib進行多目標跟蹤詳解_python
- 2022-01-07 gulp構建時報錯 ReferenceError: primordials is not defin
- 2022-09-30 Python使用draw類繪制圖形示例講解_python
- 2022-07-21 SpringBoot批量下載壓縮包的實現(xiàn)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支