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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring常用的的注解对应xml配置详解

發(fā)布時間:2023/12/10 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring常用的的注解对应xml配置详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

@Component(value="")注解:組件

  • 標(biāo)記在類上,也可以放在接口上
  • 注解作用:把AccountDao實現(xiàn)類對象交由Spring IOC容器管理
    相當(dāng)于XML配置文件中的Bean標(biāo)簽
  • <bean id="userAnnonMapper" class="com.spring.mapper.UserAnnonMapperImpl"></bean>
  • 注解Value屬性:相當(dāng)于bean標(biāo)簽id,對象在IOC容器中的唯一標(biāo)識,可以不寫,默認(rèn)值是當(dāng)前類首字母縮寫的類名。注入時需要注意此名稱!!。
  • 三個衍射注解分別是:@Controller,@Service,@Repository。
    作用與@Component注解一樣
    設(shè)計初衷增加代碼的可讀性,體現(xiàn)在三層架構(gòu)上
    @Controller一般標(biāo)注在表現(xiàn)層
    @Service一般標(biāo)注在業(yè)務(wù)層
    @Repository一般 標(biāo)注在持久層
  • 注意:此注解必須搭配掃描注解使用

    @Configuration @ComponentScan("com.*") public class SpringConfig{}

    或 XML配置

    <context:component-scan base-package="com.*"></context:component-scan>

    進(jìn)行注解掃描。
    ?

    @Autowired注解:byType自動注入

  • 標(biāo)記在成員變量或set方法上
  • 注解作用:自動將ioc容器中的對象注入到當(dāng)前的成員變量中。
    默認(rèn)按照變量數(shù)據(jù)類型注入,如果數(shù)據(jù)類型是接口,注入接口實現(xiàn)類。
    相當(dāng)于XML配置文件中的property標(biāo)簽
  • <property name="accountDao" ref="accountDao"/>
  • 按照變量的數(shù)據(jù)類型注入,它只能注入其他的bean類型
  • 注意事項:
    成員變量的接口數(shù)據(jù)類型,有多個實現(xiàn)類的時候,要使用bean的id注入,否則會報錯。
    Spring框架提供的注解
    必須指定Bean的id,使用@Qualifier的注解配合,@Qualifier注解的value屬性指定bean的id
  • 舉例

    @Component("userAnnonService02") public class UserAnnonServiceImpl01 implements UserAnnonService {} @Component("userAnnonService01") public class UserAnnonServiceImpl02 implements UserAnnonService {}

    使用需要注意,因為一個接口被兩個實現(xiàn)類實現(xiàn),所以根據(jù)屬性已經(jīng)失效了使用@Qualifier選擇要注入的實現(xiàn)類

    public class Test{ @Autowired @Qualifier("userAnnonService01") UserAnnonService userAnnonService; }

    其他補(bǔ)充

    <bean id="userService" class="com.spring.service.UserServiceImpl"> <property name="userMapper" ref="userMapper"></property> </bean> <bean id="userMapper" class="com.spring.mapper.UserMapperImpl"></bean>

    等價于注解開發(fā)的

    @Component("userService") public class UserServiceImpl implements UserService { @Autowired UserAnnonMapper userAnnonMapper; }@Component("userAnnonMapper") public class UserMapperImpl implements UserMapper {}

    這里是我認(rèn)為初學(xué)者比較容易搞混的地方。
    ?

    @Resource(name="") byName注解(jdk提供)

  • 標(biāo)記在成員變量或set方法上
  • 注解作用:相當(dāng)于@Autowired的注解與@Qualifier的注解合并了,直接按照bean的id注入。
    相當(dāng)于XML配置文件中的property標(biāo)簽
  • <property name="accountDao" ref="accountDao"/>
  • name屬性:指定bean的id
  • 如果不寫name屬性則按照變量數(shù)據(jù)類型注入,數(shù)據(jù)類型是接口的時候注入其實現(xiàn)類。如果定義name屬性,則按照bean的id注入。
  • Java的JDK提供本注解。
  • ?

    @Configuration注解

    標(biāo)記在類上
    注解作用:作用等同于beans.xml配置文件,當(dāng)前注解聲明的類中,編寫配置信息,所以我們把
    @Configuration聲明的類稱之為配置類。

    //通過配置xml的獲取 ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); accountService = ac.getBean("accountService "); //通過配置類,初始化Spring的ioc容器 ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class); //獲取AccountService接口的實現(xiàn)類對象 accountService = ac.getBean(AccountService.class);

    @Import注解

    標(biāo)記在類上
    注解作用:導(dǎo)入其他配置類(對象)
    相當(dāng)于XML配置文件中的標(biāo)簽

    <import resource="classpath:applicationContext-dao.xml"/>

    引用場景
    在配置文件按配置項目時使用xml分層
    例如 mvc.xml,dao.xml,service.xml分別配置提高可讀性和可維護(hù)性,使用 import 引入同一個xml中進(jìn)行讀取。
    多個configuration配置類時使用
    @Import(配置類.class) 或 @Import({配置類.class,配置類.class}) 參數(shù)為數(shù)組加載多個配置類
    ?

    @PropertySource注解

    標(biāo)記在類上
    注解作用:引入外部屬性文件(db.properties)
    相當(dāng)于XML配置文件中的context:property-placeholder標(biāo)簽

    <context:property-placeholder location="classpath:jdbc.properties"/> @Configuration @PropertySource({"db.properties"}) public class SpringConfigClass {}

    或者

    @PropertySource("classpath:db.properties")

    @Value注解

    標(biāo)記在成員變量或set方法上
    注解作用:給簡單類型變量賦值
    相當(dāng)于XML配置文件中的標(biāo)簽

    <property name="driverClass" value="${jdbc.driver}"/>

    @Bean注解

    標(biāo)記在配置類中的方法上
    注解作用:將方法的返回值存儲到Spring IOC容器中
    相當(dāng)于XML配置文件中的標(biāo)簽

    舉例 @PropertySource @Value @Bean 的整合

    @Configuration @PropertySource({"db.properties"}) public class SpringConfigClass { @Value("${jdbc.driver}") private String dataSource; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String userName; @Value("${jdbc.password}") private String passWord; @Bean public DruidDataSource dataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(dataSource); druidDataSource.setUrl(url); druidDataSource.setUsername(userName); druidDataSource.setPassword(passWord); return druidDataSource; } }

    等價于 xml

    <context:property-placeholder location="classpath*:db.properties"/> <!--注入 druid--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean>

    @ComponentScan(“com.*”)注解

    標(biāo)記在配置類上
    相當(dāng)于XML配置文件中的context:component-scan標(biāo)簽

    <context:component-scan base-package="com.spring.annotation" use-default-filters="false">   <context:include-filter type="custom" expression="com.spring.annotation.filter.ColorBeanLoadFilter" />   <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component" /> </context:component-scan> @Configuration @ComponentScan public class SpringConfigClass { }

    屬性
    value:指定要掃描的package; 若value值為空則掃描當(dāng)前配置類的包以及子包。
    includeFilters=Filter[]:指定只包含的組件
    excludeFilters=Filter[]:指定需要排除的組件;
    useDefaultFilters=true/false:指定是否需要使用Spring默認(rèn)的掃描規(guī)則:被@Component, @Repository, @Service, @Controller或者已經(jīng)聲明過@Component自定義注解標(biāo)記的組件;
    在過濾規(guī)則Filter中:
    FilterType:指定過濾規(guī)則,支持的過濾規(guī)則有
    ANNOTATION:按照注解規(guī)則,過濾被指定注解標(biāo)記的類;
    ASSIGNABLE_TYPE:按照給定的類型;
    ASPECTJ:按照ASPECTJ表達(dá)式;
    REGEX:按照正則表達(dá)式
    CUSTOM:自定義規(guī)則;
    value:指定在該規(guī)則下過濾的表達(dá)式;

    掃描指定類文件 @ComponentScan(basePackageClasses = Person.class) 掃描指定包,使用默認(rèn)掃描規(guī)則,即被@Component, @Repository, @Service, @Controller或者已經(jīng)聲明過@Component自定義注解標(biāo)記的組件; @ComponentScan(value = "com.yibai") 掃描指定包,加載被@Component注解標(biāo)記的組件和默認(rèn)規(guī)則的掃描(因為useDefaultFilters默認(rèn)為true@ComponentScan(value = "com", includeFilters = { @Filter(type = FilterType.ANNOTATION, value = Component.class) }) 掃描指定包,只加載Person類型的組件 @ComponentScan(value = "com", includeFilters = { @Filter(type = FilterType.ASSIGNABLE_TYPE, value = Person.class) }, useDefaultFilters = false) 掃描指定包,過濾掉被@Component標(biāo)記的組件 @ComponentScan(value = "com", excludeFilters = { @Filter(type = FilterType.ANNOTATION, value = Component.class) }) 掃描指定包,自定義過濾規(guī)則 @ComponentScan(value = "com.yibai", includeFilters = { @Filter(type = FilterType.CUSTOM, value = ColorBeanLoadFilter.class) }, useDefaultFilters = true

    舉例

    // useDefaultFilters = false 關(guān)閉默認(rèn)過濾使用創(chuàng)建的過濾 // value = {UserAllAnnonService.class, UserAllAnnonMapper.class} 只掃描這兩個接口的組件注解 @Configuration @ComponentScan(includeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {UserAllAnnonService.class, UserAllAnnonMapper.class})},useDefaultFilters = false) public class SpringConfigClass { }

    ?

    @EnableAspectJAutoProxy 開啟Aop注解支持

    對應(yīng)標(biāo)簽
    aop:aspectj-autoproxy/
    舉例

    @Configuration @ComponentScan @PropertySource("classpath:db.properties") @ImportResource({"classpath:beans.xml"}) @EnableAspectJAutoProxy public class SpringConfigClass {...}

    @EnableTransactionManagement 開啟注解事務(wù)控制

    對應(yīng)xml標(biāo)簽

    <tx:annotation-driven/> @Configuration @ComponentScan @PropertySource("classpath:sqlLink.properties") @ImportResource({"classpath:beans.xml"}) @EnableTransactionManagement public class SpringConfigClass {...}

    @Transactional() 事務(wù)處理,加到方法上,開啟當(dāng)前方法的事務(wù)支持

    常用屬性
    transactionManager 屬性: 設(shè)置事務(wù)管理器,如果不設(shè)置默認(rèn)是transactionManager。
    isolation屬性: 設(shè)置事務(wù)的隔離級別。
    propagation屬性: 事務(wù)的傳播行為。

    @Override @Transactional(transactionManager = "transactionManager", isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED) public Integer saveUser(User user) { Integer integer = userMapper.saveUser(user); return integer; }

    ?

    其他注解

    @Scope(“prototype”)

    標(biāo)記在類上,配合@Component使用
    注解作用:指定對象的作用范圍:單例模式(singleton)還是多例模式(prototype)
    ?

    @PostConstruct、@PreDestroy 生命周期注解

    @PostConstruct ==> init-method
    舉例:

    @Component public class School {@PostConstructpublic void init(){System.out.println("annotation PostConstruct");} } <bean id = "school" class="com.abc.model.School" init-method="init"></bean>

    @PreDestroy ==> destroy
    舉例:?

    @Component public class School {@PreDestroypublic void destroyMethod(){System.out.println("annotation PostConstruct");} } <bean id = "school" class="com.abc.model.School" destroy-method="init"></bean>

    ?

    @ImportResource({“classpath:beans.xml”})

    引入外部配置,此注解適用于配置類和xml配置共同存在
    舉例

    @Configuration @ComponentScan @PropertySource("classpath:db.properties") @ImportResource({"classpath:beans.xml"}) public class SpringConfigClass {...}

    對應(yīng)xml配置

    <import resource="beans.xml"></import>

    @Aspect 切面

    注解作用:當(dāng)前類的對象,是一個切面類

    <aop:config><aop:aspect id="" ref="" /></aop:config>

    @Pointcut 切點

    @Pointcut("execution(public void com.itheima.service.AccountServiceImpl.save())") public void pointcut() {}

    對應(yīng)xml

    <aop:pointcut id="pointcutService" expression="execution(* com.spring.service.UserServiceImpl.*(..))"/>

    @After(“pointcut()”) 后置通知
    @AfterThrowing(“pointcut()”) 異常通知
    @AfterReturning(“pointcut()”) 最終通知
    @Before(“pointcut()”) 前置通知
    舉例

    @Before("pointcut()") public void beforePrintLog() { System.out.println("方法執(zhí)行之前,輸出日志"); }

    對應(yīng)xml

    <aop:before method="beforePrintLog" pointcut-ref="pointcutService"/>

    @Around(“pointcut()”) 環(huán)繞通知

    //要求必須要傳遞一個參數(shù): ProceedingJoinPoint @Around("pointcut()") public void aroundPrint(ProceedingJoinPoint joinPoint) {}

    @MapperScan

    指定要變成實現(xiàn)類的接口所在的包,然后包下面的所有接口在編譯之后都會生成相應(yīng)的實現(xiàn)類

    @MapperScan("com")

    ?

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的Spring常用的的注解对应xml配置详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。