溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中Spring-IOC容器與Bean管理之注解的示例分析

發布時間:2021-09-01 14:26:22 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Java中Spring-IOC容器與Bean管理之注解的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Spring-IOC容器-Bean管理-基于注解方式

什么是注解?

(1)注解是代碼特殊標記,格式:@注解名稱(屬性名稱=屬性值, 屬性名稱=屬性值…)

(2)使用注解,注解作用在類上面,方法上面,屬性上面

(3)使用注解目的:簡化 xml 配置

Spring 針對 Bean 管理中創建對象提供注解

下面四個注解功能是一樣的,都可以用來創建 bean 實例

(1)@Component

(2)@Service

(3)@Controller

(4)@Repository

基于注解方式實現對象創建

①引入依賴(引入spring-aop jar包)

②開啟組件掃描

<!--開啟組件掃描
 1 如果掃描多個包,多個包使用逗號隔開
 2 掃描包上層目錄
-->
<context:component-scan base-package="com.atguigu"></context:component-scan>

③創建類,在類上面添加創建對象注解

//在注解里面 value 屬性值可以省略不寫,
//默認值是類名稱,首字母小寫
//UserService -- userService
@Component(value = "userService") //注解等同于XML配置文件:<bean id="userService" class=".."/>
public class UserService {
     public void add() {
     	System.out.println("service add.......");
     }
}

開啟組件掃描細節配置

<!--示例 1
 use-default-filters="false" 表示現在不使用默認 filter,自己配置 filter
 context:include-filter ,設置掃描哪些內容
-->
<context:component-scan base-package="com.atguigu" use-defaultfilters="false">
 <context:include-filter type="annotation"

expression="org.springframework.stereotype.Controller"/><!--代表只掃描Controller注解的類-->
</context:component-scan>
<!--示例 2
 下面配置掃描包所有內容
 context:exclude-filter: 設置哪些內容不進行掃描
-->
<context:component-scan base-package="com.atguigu">
 <context:exclude-filter type="annotation"

expression="org.springframework.stereotype.Controller"/><!--表示Controller注解的類之外一切都進行掃描-->
</context:component-scan>

基于注解方式實現屬性注入

① @Autowired:根據屬性類型進行自動裝配

(1)第一步 把 service 和 dao 對象創建,在 service 和 dao 類添加創建對象注解。

(2)第二步 在 service 注入 dao 對象,在 service 類添加 dao 類型屬性,在屬性上面使用注解。

@Service
public class UserService {
 //定義 dao 類型屬性
 //不需要添加 set 方法
 //添加注入屬性注解
 @Autowired
 private UserDao userDao;
 public void add() {
 System.out.println("service add.......");
 userDao.add();
 }
}

//Dao實現類
@Repository
//@Repository(value = "userDaoImpl1")
public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("dao add.....");
    }
}

② @Qualifier:根據名稱進行注入,這個@Qualifier 注解的使用,和上面@Autowired 一起使用

//定義 dao 類型屬性
//不需要添加 set 方法
//添加注入屬性注解
@Autowired //根據類型進行注入
//根據名稱進行注入(目的在于區別同一接口下有多個實現類,根據類型就無法選擇,從而出錯?。?
@Qualifier(value = "userDaoImpl1") 
private UserDao userDao;

③ @Resource:可以根據類型注入,也可以根據名稱注入(它屬于javax包下的注解,不推薦使用?。?/p>

//@Resource //根據類型進行注入
@Resource(name = "userDaoImpl1") //根據名稱進行注入
private UserDao userDao;

④ @Value:注入普通類型屬性

@Value(value = "abc")
private String name

完全注解開發

(1)創建配置類,替代 xml 配置文件

@Configuration //作為配置類,替代 xml 配置文件
@ComponentScan(basePackages = {"com.atguigu"})
public class SpringConfig {
    
}

(2)編寫測試類

@Test
public void testService2() {
 //加載配置類
 ApplicationContext context
 = new AnnotationConfigApplicationContext(SpringConfig.class);
 UserService userService = context.getBean("userService",
UserService.class);
 System.out.println(userService);
 userService.add();
}

關于“Java中Spring-IOC容器與Bean管理之注解的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女