您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Java中Spring-IOC容器與Bean管理之注解的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
(1)注解是代碼特殊標(biāo)記,格式:@注解名稱(屬性名稱=屬性值, 屬性名稱=屬性值…)
(2)使用注解,注解作用在類上面,方法上面,屬性上面
(3)使用注解目的:簡(jiǎn)化 xml 配置
下面四個(gè)注解功能是一樣的,都可以用來(lái)創(chuàng)建 bean 實(shí)例
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
①引入依賴(引入spring-aop jar包)
②開啟組件掃描
<!--開啟組件掃描 1 如果掃描多個(gè)包,多個(gè)包使用逗號(hào)隔開 2 掃描包上層目錄 --> <context:component-scan base-package="com.atguigu"></context:component-scan>
③創(chuàng)建類,在類上面添加創(chuàng)建對(duì)象注解
//在注解里面 value 屬性值可以省略不寫, //默認(rèn)值是類名稱,首字母小寫 //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" 表示現(xiàn)在不使用默認(rèn) filter,自己配置 filter context:include-filter ,設(shè)置掃描哪些內(nèi)容 --> <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 下面配置掃描包所有內(nèi)容 context:exclude-filter: 設(shè)置哪些內(nèi)容不進(jìn)行掃描 --> <context:component-scan base-package="com.atguigu"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/><!--表示Controller注解的類之外一切都進(jìn)行掃描--> </context:component-scan>
① @Autowired:根據(jù)屬性類型進(jìn)行自動(dòng)裝配
(1)第一步 把 service 和 dao 對(duì)象創(chuàng)建,在 service 和 dao 類添加創(chuàng)建對(duì)象注解。
(2)第二步 在 service 注入 dao 對(duì)象,在 service 類添加 dao 類型屬性,在屬性上面使用注解。
@Service public class UserService { //定義 dao 類型屬性 //不需要添加 set 方法 //添加注入屬性注解 @Autowired private UserDao userDao; public void add() { System.out.println("service add......."); userDao.add(); } } //Dao實(shí)現(xiàn)類 @Repository //@Repository(value = "userDaoImpl1") public class UserDaoImpl implements UserDao { @Override public void add() { System.out.println("dao add....."); } }
② @Qualifier:根據(jù)名稱進(jìn)行注入,這個(gè)@Qualifier 注解的使用,和上面@Autowired 一起使用
//定義 dao 類型屬性 //不需要添加 set 方法 //添加注入屬性注解 @Autowired //根據(jù)類型進(jìn)行注入 //根據(jù)名稱進(jìn)行注入(目的在于區(qū)別同一接口下有多個(gè)實(shí)現(xiàn)類,根據(jù)類型就無(wú)法選擇,從而出錯(cuò)!) @Qualifier(value = "userDaoImpl1") private UserDao userDao;
③ @Resource:可以根據(jù)類型注入,也可以根據(jù)名稱注入(它屬于javax包下的注解,不推薦使用?。?/p>
//@Resource //根據(jù)類型進(jìn)行注入 @Resource(name = "userDaoImpl1") //根據(jù)名稱進(jìn)行注入 private UserDao userDao;
④ @Value:注入普通類型屬性
@Value(value = "abc") private String name
(1)創(chuàng)建配置類,替代 xml 配置文件
@Configuration //作為配置類,替代 xml 配置文件 @ComponentScan(basePackages = {"com.atguigu"}) public class SpringConfig { }
(2)編寫測(cè)試類
@Test public void testService2() { //加載配置類 ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = context.getBean("userService", UserService.class); System.out.println(userService); userService.add(); }
關(guān)于“Java中Spring-IOC容器與Bean管理之注解的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(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)容。