Spring常用注解

Spring常用注解,第1张

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配置文件

 	
    
    
    
	
    

以下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;
    }

    

    @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;
    }
    
        
        
        
        
    
    
    
        
    
    
    
        
        
    

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5686329.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存