日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring IoC — 基于注解的配置

發布時間:2025/6/15 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring IoC — 基于注解的配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于XML的配置,Bean定義信息和Bean實現類本身是分離的,而采用基于注解的配置方式時,Bean定義信息即通過在Bean實現類上標注注解實現。

@Component:對類進行標注,Spring容器自動將POJO轉換為容器管理的Bean; @Repository:用于對DAO實現類進行標注; @Service:用于對Service實現類進行標注; @Controller:用于對Controller實現類進行標注。 1、自動裝配Bean: beans.xml: <?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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.ioc.ch4_10"/><bean id="ls" class="com.ioc.ch4_10.LogonService"></bean><!-- context:component-scan base-package="com.baobaotao" resource-pattern="anno/*.class"/ --><!-- context:component-scan base-package="com.baobaotao"><context:include-filter type="regex" expression="com\.baobaotao\.anno.*Dao"/><context:include-filter type="regex" expression="com\.baobaotao\.anno.*Service"/><context:exclude-filter type="aspectj" expression="com.baobaotao..*Controller+"/></context:component-scan --> </beans>

?LogDao類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; @Component("logDao") public class LogDao { }

UserDao_1類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; @Component("userDao_1") //自動被Spring容器識別,Spring容器自動將POJO轉換為容器管理的Bean //等價于XML配置的<bean id="userDao_1" class="com.ioc.ch4_10.UserDao_1"> public class UserDao_1 {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "UserDao_1{" +"name='" + name + '\t' +'}';}public UserDao_1() {System.out.println("userDao");} }

UserDao_2類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; /*** Created by gao on 16-3-25.*/ @Component("userDao_2") public class UserDao_2 {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "UserDao_2{" +"name='" + name + '\t' +'}';}public UserDao_2() {System.out.println("userDao_2");} }

UserDao_3類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; /*** Created by gao on 16-3-25.*/ @Component("userDao_3") public class UserDao_3 {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "UserDao_3{" +"name='" + name + '\t' +'}';}public UserDao_3() {System.out.println("userDao_3");} }

LogonService類:

package com.ioc.ch4_10; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @Service public class LogonService{//使用@Autowired進行自動注入 @Autowiredprivate LogDao logDao;@Autowiredprivate UserDao_1 userDao1;//使用@Autowired的required屬性,設置為false表示找不到匹配的Bean完成注入也不要拋出異常@Autowired(required = false)private UserDao_2 userDao_2;//使用@Qualifier指定注入Bean的名稱 @Autowired@Qualifier("userDao_3")private UserDao_3 userDao_3;public LogDao getLogDao() {return logDao;}public UserDao_1 getUserDao1() {return userDao1;}public UserDao_2 getUserDao2() {return userDao_2;}public UserDao_3 getUserDao3() {return userDao_3;}public void printSomething(){userDao1.setName("LogonService-userDao1");System.out.println(userDao1.toString());userDao_2.setName("LogonService-userDao2");System.out.println(userDao_2.toString());userDao_3.setName("LogonService-userDao3");System.out.println(userDao_3.toString());} }

LoginService_2類:

package com.ioc.ch4_10; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; /*** Created by gao on 16-3-25.*/ @Service public class LogonService_2 {private LogDao logDao;private UserDao_1 userDao_1;//自動將LogDao傳給方法入參 @Autowiredpublic void setLogDao(LogDao logDao) {System.out.println("auto setlogdao");this.logDao = logDao;}//自動將名為userDao的Bean傳給方法入參 @Autowiredpublic void setUserDao_1(UserDao_1 userDao_1) {System.out.println("auto setuserdao");this.userDao_1 = userDao_1;}@Autowiredpublic void init(@Qualifier("userDao_1")UserDao_1 userDao,LogDao logDao){System.out.println("multi param inject");this.userDao_1 = userDao;this.logDao =logDao;} }

測試類:

package com.ioc.ch4_10; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /*** Created by gao on 16-3-25.*/ public class Test {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com\\ioc\\ch4_10\\beans.xml");LogonService ls = (LogonService) ctx.getBean("ls");ls.printSomething();} }

?

輸出結果: userDao userDao_2 userDao_3 multi param inject auto setlogdao auto setuserdao UserDao_1{name='LogonService??userDao1} UserDao_2{name='LogonService-userDao2 } UserDao_3{name='LogonService-userDao3 } 2、對集合類進行標注 Plugin接口: package com.ioc.ch4_10; public interface Plugin { }

?onePlugin類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; @Component public class OnePlugin implements Plugin { }

twoPlugin類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; @Component public class TwoPlugin implements Plugin { }

MyComponent類:

package com.ioc.ch4_10; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; @Component public class MyComponent {//Spring會將容器中所有類型為Plugin的Bean注入到這個變量中@Autowired(required=false)private List<Plugin> plugins;public List<Plugin> getPlugins() {return plugins;} }

mycomponent.xml:

<?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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.ioc.ch4_10"><context:include-filter type="aspectj" expression="com.baobaotao.anno.*Plugin+"/><context:include-filter type="aspectj" expression="com.baobaotao.anno.MyComponent"/></context:component-scan> </beans>

MyComponentTest類:

package com.ioc.ch4_10; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyComponentTest {public static void main(String[] args) throws Throwable {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com\\ioc\\ch4_10\\mycomponent.xml");MyComponent myComponent = ctx.getBean(MyComponent.class);System.out.println("pulgin.size:"+myComponent.getPlugins().size());} } 輸出結果: userDao userDao_2 userDao_3 multi param inject auto setlogdao auto setuserdao pulgin.size:2 3、Bean作用范圍及生命過程方法 使用Scope指定作用范圍 package com.ioc.ch4_10; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; //指定Bean的作用范圍為prototype @Scope(BeanDefinition.SCOPE_PROTOTYPE) @Component public class Car {private int maxSpeed;public String brand;private double price;...... }

?

?Boss類:

package com.ioc.ch4_10; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; @Component public class Boss {private Car car;public Boss(){System.out.println("construct...");}@Resourceprivate void setCar(Car car){System.out.println("execute in setCar");this.car = car;}@PostConstructprivate void init1(){System.out.println("execute in init1");}@PostConstructprivate void init2(){System.out.println("execute in init1");}@PreDestroyprivate void destory1(){System.out.println("execute in destory1");}@PreDestroyprivate void destory2(){System.out.println("execute in destory2");} }

測試類:

package com.ioc.ch4_10; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /*** Created by gao on 16-3-25.*/ public class Test {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com\\ioc\\ch4_10\\beans.xml");Car car1 = (Car) ctx.getBean("car");Car car2 = (Car) ctx.getBean("car");System.out.println(car1 == car2); //falseUserDao_2 ud1 = (UserDao_2) ctx.getBean("userDao_2");UserDao_2 ud2 = (UserDao_2) ctx.getBean("userDao_2");System.out.println(ud1 == ud2); //true ((ClassPathXmlApplicationContext)ctx).destroy();} } 輸出結果: construct... execute in setCar execute in init1 execute in init1 false true execute in destory2 execute in destory1

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/yangyquin/p/5321373.html

總結

以上是生活随笔為你收集整理的Spring IoC — 基于注解的配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久99精品国产麻豆婷婷 | 欧美a天堂| 日韩资源 | 色屁屁ts人妖系列二区 | 日日噜噜噜夜夜爽爽狠狠视频97 | 亚洲高清中文字幕 | 美女国产视频 | 国产成人综合精品 | 丝袜一区二区三区 | 欧美一区二区三区视频在线观看 | 欧美视频第二页 | 丁香婷婷深情五月亚洲 | av之家在线 | 国产极品免费 | 日韩av在线一区二区 | 国产福利影院 | 国产模特av私拍大尺度 | 69av在线播放 | 嫩草av在线 | 69av在线| 成年人国产 | 欧美日韩网 | 日本高清免费不卡视频 | 国产日韩欧美一区二区 | 淫片在线 | 日韩色资源 | 日韩av中文字幕在线免费观看 | 久久韩日| 午夜精品视频一区二区三区在线看 | 无套内谢少妇高潮免费 | 欧美大片91 | www.色呦呦 | 亲嘴脱内衣内裤 | 超碰公开在线观看 | 欧美理伦片在线播放 | 黄色变态网站 | 亚洲在线免费观看视频 | 韩国电影大尺度在线观看 | 午夜精品久久久久久久久久久久 | 丝袜美女啪啪 | 非洲黑寡妇性猛交视频 | 日韩在线激情 | 在线不卡的av | 国产传媒视频在线 | 婷婷亚洲天堂 | 一眉道姑| 丁香花免费高清完整在线播放 | 99视频久 | 国产午夜无码精品免费看奶水 | 18p在线观看 | 熟妇大屁股一区二区三区视频 | 特黄aaaaaaa片免费视频 | 国产亚洲精品久久久久丝瓜 | 狠狠操狠狠爱 | 亚洲欧美综合网 | 香蕉视频免费在线播放 | 草草影院最新 | 中国老熟妇自拍hd发布 | 久久久久久久久影院 | 曰本女人与公拘交酡 | 在线中出 | 免费观看黄色网 | 欣赏asian国模裸体pics | 熟女高潮一区二区三区视频 | 91av视频在线观看 | 依依成人av | 久久99精品久久久久 | 中文字幕啪啪 | 国产裸体美女永久免费无遮挡 | 潘金莲一级淫片aaaaaa播放 | 亚洲视频www | 久久婷五月天 | 欧美日韩18 | 国产精品免费久久久 | 黄色片网站在线看 | 少妇专区 | 国产青草视频 | 亚洲一区中文字幕永久在线 | 久久作爱| 91成年视频 | 亚洲精品久久久久中文字幕二区 | caoporn人人| 两个人看的www视频免费完整版 | 亚洲专区av | 97伊人| 91人妻一区二区三区 | 91在线播放视频 | 国产精品资源网站 | 99精品视频免费观看 | 国产经典一区二区三区 | 黑人性视频 | 亚洲乱亚洲乱妇 | 日韩免费片 | 欧美日韩亚洲一区二区 | 午夜在线| 手机看片一区 | 中国女人毛茸茸 | 亚洲福利影视 | 欧美高清视频一区 |