手机版 欢迎访问it开发者社区(www.mfbz.cn)网站

当前位置: > 开发

24-Spring注解开发

时间:2021/4/23 1:33:54|来源:|点击: 次

1、声明bean

2、注入

3、用于事务控制的注入

4、注解所需要的的配置   -->      <context:component-scan base-package="com.nuc.*"/>

5、控制事务需要的注解   -->      <tx:annotation-driven transaction-manager="tx"/>

6、删除的配置

 

 

 

1、声明bean

//  @Service   等价于
//  <bean id="studentDaoMapperServiceIml" class="com.nuc.serveriml.StudentDaoMapperServiceIml"></bean>
@Service
public class StudentDaoMapperServiceIml implements StudentDaoMapperService {


// 自定义bean的id
//  @Service("StudentDaoMapper11111111")   等价于
//  <bean id="StudentDaoMapper11111111" class="com.nuc.serveriml.StudentDaoMapperServiceIml"></bean>
@Service("StudentDaoMapper11111111")
public class StudentDaoMapperServiceIml implements StudentDaoMapperService {



//  @Repository("StudentDaoMapper11111")   等价于
//  <bean id="StudentDaoMapper11111" class="com.nuc.dao.StudentDaoMapper"></bean>
@Repository("StudentDaoMapper11111")
public interface StudentDaoMapper {
    List<Student> getAllStudent();
}



//@Repository  使用在实现类上。接口的实现类上。。。
//@Repository  使用在实现类上。接口的实现类上。。。
//@Repository  使用在实现类上。接口的实现类上。。。

//spring整和mybatis的时候,使用的是..通过以下配置来将dao包加入到工厂中
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.nuc.dao"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>



//  @Repository   等价于
//  <bean id="studentDaoMapper" class="com.nuc.dao.StudentDaoMapper"></bean>
@Repository
public interface StudentDaoMapper {
    List<Student> getAllStudent();
}


@Scope("Singleton")   --->  指定是单利模式还是多例模式

  2、注入

    // 根据类型来注入
    @Autowired
    private StudentDaoMapper studentDaoMapper;


    // 根据名称来注入
    @Resource
    private StudentDaoMapper studentDaoMapper;


    // 根据类型来注入 并指定bean的id是 studentDaoMapper
    @Autowired
    @Qualifier("studentDaoMapper")
    private StudentDaoMapper studentDaoMapper;


    @Value("注入一个简单类型的值    这个字符串会注入给name")
    private  String name;

 

3、用于事务控制的切入


// 作用在方法还是类上

@Service
@Transactional //则该类的所有方法都有事务控制  
public class StudentDaoMapperServiceIml implements StudentDaoMapperService {
    // 根据类型来注入 并指定bean的id是 studentDaoMapper
    @Autowired
    @Qualifier("studentDaoMapper")
    private StudentDaoMapper studentDaoMapper;

    @Value("注入一个简单类型的值    这个字符串会注入给name")
    private  String name;


    @Override
    @Transactional //则该方法拥有了事务控制
    public List<Student> getAllStudent() {
        return studentDaoMapper.getAllStudent();
    }
}

4、注解需要使用的配置

    <!-- 告诉spring 注解在哪个位置 -->
    <context:component-scan base-package="com.nuc.*"/>

 

5、spring事务需要的注解

    <!-- spring事务-->
    <bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <tx:annotation-driven transaction-manager="tx"/>

 

6、删除的配置:有了注解之后,下面的配置就不需要了

    <tx:advice id="txAdvice" transaction-manager="tx">
        <tx:attributes>
            <!--匹配原则是从上到下  有精确到 * 匹配-->
            <tx:method name="get*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true" rollback-for="java.lang.Exception"/>
            <tx:method name="find*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/>
            <tx:method name="load*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
        </tx:attributes>
    </tx:advice>
    <!--织入 -->
    <aop:config>
        <!-- 定义切入点 -->
        <aop:pointcut id="serviceMethod" expression="execution(* com.nuc.dao.*.*(..))" />
        <!-- 将事物增强点和切入点进行织入      事物+切入点 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"/>
    </aop:config>

 

Copyright © 2002-2019 某某自媒体运营 版权所有