Spring常用注解

Spring常用注解

目录

Spring常用注解

IoC

创建对象        

属性注入

AOP

创建代理对象

通知(增强)

事务

配置类


IoC

创建对象        

Spring 针对 Bean 管理中创建对象提供以下注解

@Service:习惯上声明在Service层

@Controller:习惯上声明在Web层

@Repository:习惯上声明在Dao层

@Component:不属于以上三层的统一使用该注解

四个注解功能是一样的,都可以用来创建 bean 实例,无功能区分,仅字面不同。

属性注入

@Autowired:根据属性类型进行自动装配

@Qualifier:根据名称进行注入

                     这个@Qualifier 注解的使用,和上面@Autowired 一起使用

                     @Autowired

                     @Qualifier(value = "userDaoImpl")

@Resource:可以根据类型注入,可以根据名称注入(不建议使用,因为不是spring里面自带的注解)

                       @Resource //根据类型进行注入*

                       @Resource(name = "userDaoImpl") //根据名称进行注入

@Value:注入普通类型属性

               @Value(value = "abc")

AOP

创建代理对象

@Aspect:生成代理对象,声明在代理类的上面

通知(增强)

@Pointcut("execution(* com.wenbin.aopdemo1.dao.UserDao.*(..))"):提取公共切入点 要切入的类方法

以下注解的value属性里填写切入点

@Before:前置通知:被切入的方法执行之前执行(应用场景:各种校验)

@AfterReturning:后置通知:被切入的方法成功执行之后执行

@Around:环绕通知:被切入的方法执行之前 和 成功执行之后执行 分别执行

                   该注解声明的方法参数 ProceedingJoinPoint proceedingJoinPoint

                   proceedingJoinPoint.proceed();表示执行被切入的方法,在此前后切入对应增强逻辑

@AfterThrowing:异常通知:被切入的方法执行期间出现异常执行(应用:包装异常信息)

@After:最终通知:无论被切入的方法是否成功执行 在最终都进行执行(应用:统一管理资源)

事务

@Transactional:这个注解添加到类上面,也可以添加方法上面

                             如果把这个注解添加类上面,这个类里面所有的方法都添加事务

                             如果把这个注解添加方法上面,为这个方法添加事务

该注解的参数详细:

propagation:事务传播行为

ioslation:事务隔离级别:脏读、不可重复读、幻读

timeout:超时时间:事务需要在一定时间内进行提交,如果不提交进行回滚

readOnly:是否只读:读:查询操作,写:添加修改删除操作

rollbackFor:回滚:设置出现哪些异常进行事务回滚

noRollbackFor:不回滚:设置出现哪些异常不进行事务回滚

配置类

完全注解开发,功能替代 xml 配置文件

@Configuration:作为配置类,替代 xml 配置文件

@ComponentScan(basePackages = {"com.wenbin"}):扫描的指定包下的注解

@EnableAspectJAutoProxy(proxyTargetClass = true):开启 Aspect 生成代理对象

                                        参数true代表是要生成代理对象时强制使用CGLIB的方式

@EnableTransactionManagement:开启事务

以上注解声明在类上面,使该类作为一个配置类替代以下xml配置文件

 	<!--    开启注解扫描 扫描多个包用逗号隔开-->
    <context:component-scan base-package="com.wenbin.aopdemo1"></context:component-scan>
    <!--    开启 Aspect 生成代理对象-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
	<!--    开启事务注解-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

以下java代码写在配置类中替代以下配置文件 实现完全注解开发

   /**
     * 创建数据库连接池
     */
    @Bean
    public DruidDataSource getDruidDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql:///jdbctest?useSSL=true&serverTimezone=UTC&rewriteBatchedStatements=true");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        return dataSource;
    }

    /**
     * 创建 JdbcTemplate 对象
     */

    @Bean
    public JdbcTemplate getJdbcTemplate(DataSource dataSource) {
        //到 ioc 容器中根据类型找到 dataSource
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        //注入 dataSource
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }

    /**
     * 创建事务管理器
     */
    @Bean
    public DataSourceTransactionManager
    getDataSourceTransactionManager(DataSource dataSource) {
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }
<!--    数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="url"
 		  value="jdbc:mysql:///jdbctest?useSSL=true&amp;serverTimezone=UTC&amp;rewriteBatchedStatements=true"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    </bean>
    <!--    创建 JdbcTemplate对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--    创建事务管理器-->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--    注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值