生气不如争气之秘密

本文分享了面对生活中的挑战与困难时,如何调整心态,通过智慧和努力来克服障碍的十个秘密。从转变视角看待困境到珍惜拥有,从职场竞争到个人成长,提供了实用的建议。

生气不如争气之秘密一:

愚蠢的人只会生气,聪明的人懂得去争气

哲学家康德说:“生气,是拿别人的错误惩罚自己。世界上没有爬不过的火焰山。也许生活给了我们太多的磨难,家庭、工作、爱情,但谁又能说他一辈子不会遇到这些呢?与其用痛苦一遍一遍地折磨自己,何不试着绕开它,去做个聪明的人,做一个善待自己的人呢?生气就是拿别人的错误惩罚自己,谁又想做这样愚蠢的人呢?

生活是自己创造的,心情是自己营造的。不要为小事生气,生气不如争气,引怒火做功,你能活出生命的色彩。

生气不如争气之秘密二:

快乐不是拥有的多而是计较的少

一个人最重要的是要学会让自己快乐起来,不要成天去计较一些鸡毛蒜皮的小事,否则最终伤害的只是你自己。

人生需要爱更需要快乐,但快乐不电拥有的多而是计较的少。人一生要遇到很多不顺的事,如果你遇事斤斤计较不能坦然面对.或抱怨或生气,最终受伤害的只有你自己。莫生气,不要计较太多,知足常乐。容易满足的人,才会更加快乐、幸福。

生气不如争气之秘密三:

学会从另外一角度看困境

海明威在《老人与海》里也说过这样一句话:“英雄可以被摧毁,但是不能被击败。”

人生有顺境,也有困境,不可能处处是逆境。人生有巅峰,也有谷底,不可能处处是谷底。因为顺境或巅峰而趾高气扬,因为逆境或低谷而垂头丧气,都是浅薄的人生.困境只是人生的一个考验而已,鼓起勇气,心存希望,全面分析自己的失误,坚持不懈地走下去,让自己成为一个强者,勇敢地走出谷底就是智者的人生。

换一种角度看困境,就会出现不一样的结果。

生气不如争气之秘密四:

选择与放弃都是一种生活

生活中有太多的银霾,太多的风雨,有时候它不会考虑我们的感受,它只是个任性的"孩子",如何去选择是你自己的事情,承受也是你自己的事情!

其实,人生就是一个不断选择和放弃的过程,往往鱼和熊掌不可能兼得,见什么要什么,想什么是什么,被物所役、被事所迷的心态不是人生最为本质的意义,更不是最为明智的选择。

生气不如争气之秘密五:

看淡失去的珍惜拥有的

有句话说得好:“人生中最珍贵的不是失去和得不到的,而是现在拥有的幸福。

失去是一种痛苦也是一种幸福,因为失去的同时也在得到。失去了太阳,可以欣赏满天的繁星;失去了绿色,得到了丰硕的金秋;失去了青春岁月,我们走进成熟的人生……生活,需要享受收获的喜悦,也该享受失去的乐趣,更重要的是要珍惜现在所拥有的美好。

生气不如争气之秘密六:

找到方法,秀出职场中的你

职场中,别人比自己强了,受到领导表扬了,得到嘉奖了,你会生气吗?如果会,那么你就要学会争气。抖擞精神积极行动,奋力拼搏抢在他人前面才是最明智的选择。只要你强了,只要你成功了,别人自然不会瞧不起你。

充实自己,完善自我,迈向成功才是最重要的。

生气不如争气之秘密七:

人生最大的失败就是被自己打败

失败并不可怕,被别人打败也不可怕,可怕的是被自己打倒,从此一蹶不振、埋天怨地。人生最大的失败莫过于此,人与人之间,弱者与强者之阍,成功与失败之间最大的差异就在与意志力量的差异。人一旦有了意志的力量,就能战胜自身的各种弱点。

敢于挑战自己就是争气的表现。一个人具备了敢于挑战自己的这种素质,就能俄成这个世界上能做的任何事情。

生气不如争气之秘密八:

没有完善的爱情也没有完美的爱人

人人都渴望自己幸福,渴望幸福的爱情、幸福的家庭,一个人只要有了幸福的爱情、美满的家庭,才能安心地工作,而这对于成功来说也是一种助力,同时,幸福美满的家庭也是人们心灵的港湾。

完美主义者”总是期望能找到毫无瑕疵的爱情、终生幸福的婚姻,但这又何尝不是一种奢望,要知道,我们永远不可能做到最好、最完美,但我们还要尽力去做。平淡的生活中,努力营造幸福的生活,就要为你的爱情和幸福争气,这就需要双方全心全意地付出,需要理解与包容!

生气不如争气之秘密九:

你在哪个方面能走多远,取决于与你一起走的人

在人们追求事业成功和幸福快乐的生活过程中,同样也存在一个类似血肪的系统,我们称它为人肪。

常言说“一个好汉三个帮,一个篱笆三个桩”,“一人成木,二人成林,三个成森林”,都是说,要想做成大事,必定要有做威大事的人肪网络和人肪支持系统。在成功之路上,朋友是我们重要的助力、每个人的人生中都会有或多或少的朋友,他们可能并不能直接决定我们的人生方向和成功与否,但却可以间接地影响我们,而且这种力量是我们不能小视的。

生气不如争气之秘密十:

你无法选择开始,但你可以决定结果

人生在世,有很多我们是无法选择的,比如:我们无法选择我们的出生,但我们可以凭借我们的知识和能力,改变我们的未来;我们无法选择我们的外貌,但我们可以提升我们的内涵,搞高我们的实力。很多事情是不期而至的,我们无法去选择它何时开始,但是我们可以决定它的结果,这完全取决于自己。

来自:http://hi.baidu.com/%BF%C9%BA%EC/blog/item/8073970007489e16738b65c4.html

<think> 我们之前已经讨论过如何修改`AnnotationTransactionAttributeSource`的`allowPublicMethodsOnly`属性。用户现在再次询问具体做法,可能是对之前的回答有疑问或需要更详细的步骤。根据之前的回答,我们是通过创建一个自定义的`AnnotationTransactionAttributeSource` bean并设置其属性来实现的。 但是,请注意:在Spring Boot中,通常不需要手动创建`AnnotationTransactionAttributeSource`,因为事务拦截器(`TransactionInterceptor`)和事务属性源(`TransactionAttributeSource`)通常是自动配置的。直接覆盖这些bean可能会影响整个事务管理配置。 因此,我们需要考虑更安全的方法。实际上,`AnnotationTransactionAttributeSource`的`allowPublicMethodsOnly`属性默认是`true`,这意味着只有公共方法上的事务注解才会被处理。如果我们想允许非公共方法(如protected、private)上的事务注解生效,我们需要将其设置为`false`。 在Spring Boot中,我们可以通过自定义`TransactionAttributeSource`来实现,但需要小心不要破坏其他事务配置。下面是一个更完整的示例,展示如何覆盖默认的`TransactionInterceptor`,从而使用我们自定义的`TransactionAttributeSource`: ```java import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource; import org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration; import org.springframework.transaction.interceptor.TransactionAttributeSource; import org.springframework.transaction.interceptor.TransactionInterceptor; @Configuration public class TransactionConfig extends ProxyTransactionManagementConfiguration { @Bean @Override public TransactionAttributeSource transactionAttributeSource() { // 创建自定义的事务属性源,并设置allowPublicMethodsOnly为false AnnotationTransactionAttributeSource source = new AnnotationTransactionAttributeSource(); source.setAllowPublicMethodsOnly(false); return source; } @Bean @Override public TransactionInterceptor transactionInterceptor() { TransactionInterceptor interceptor = new TransactionInterceptor(); interceptor.setTransactionAttributeSource(transactionAttributeSource()); if (this.txManager != null) { interceptor.setTransactionManager(this.txManager); } return interceptor; } } ``` 注意:上面的配置类继承了`ProxyTransactionManagementConfiguration`,这是Spring事务管理的基础配置类。我们通过覆盖`transactionAttributeSource`方法来自定义属性源,并在`transactionInterceptor`方法中使用这个自定义的属性源。 但是,这种方法可能会因为Spring Boot版本的不同而有所差异。在较新的Spring Boot版本中,可能更推荐使用自定义`TransactionAttributeSource`的方式,或者通过配置属性来调整。 另外,还有一种方法是利用Spring AOP的配置,但通常事务管理是通过代理实现的,所以上述方法是比较直接的。 然而,用户可能使用的是XML配置,那么我们可以这样配置: ```xml <bean id="transactionAttributeSource" class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"> <property name="allowPublicMethodsOnly" value="false"/> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionAttributeSource" ref="transactionAttributeSource"/> <!-- 还需要设置事务管理器 --> <property name="transactionManager" ref="transactionManager"/> </bean> <!-- 然后需要配置一个BeanNameAutoProxyCreator或者使用AspectJ自动代理 --> ``` 但是,在Spring Boot中,我们通常使用Java配置。 需要提醒的是,修改这个属性为`false`后,非公共方法(如protected、private)上的`@Transactional`注解也会被处理。但是,由于Spring的AOP代理机制(默认使用JDK动态代理,只能代理公共方法),即使设置了`allowPublicMethodsOnly`为false,非公共方法上的事务注解也不会生效,除非使用AspectJ模式。因此,要使非公共方法的事务生效,还需要配置使用AspectJ进行织入。 所以,在修改`allowPublicMethodsOnly`的同时,我们通常还需要启用AspectJ事务管理。这可以通过在配置类上添加`@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)`来实现。 综上所述,完整的步骤包括: 1. 自定义`TransactionAttributeSource`,设置`allowPublicMethodsOnly`为`false`。 2. 配置使用AspectJ模式的事务管理(以便能够拦截非公共方法)。 3. 确保类路径上有AspectJ的依赖和织入器(如Spring的`spring-aspects`模块)。 因此,用户可能需要考虑是否真的需要拦截非公共方法,因为使用AspectJ模式会带来一定的复杂性。 下面是一个完整的示例,包括启用AspectJ事务管理: ```java @Configuration @EnableTransactionManagement(mode = AdviceMode.ASPECTJ) public class TransactionConfig { @Bean public TransactionAttributeSource transactionAttributeSource() { AnnotationTransactionAttributeSource source = new AnnotationTransactionAttributeSource(); source.setAllowPublicMethodsOnly(false); return source; } // 还需要配置一个AspectJ事务拦截器,但通常使用AnnotationTransactionAspect即可 // 但是,这样还不够,我们还需要将事务属性源设置到AspectJ的事务切面中 // 实际上,使用AspectJ时,事务属性源是通过AnnotationTransactionAspect的静态方法设置的 // 所以我们需要在初始化时设置 @PostConstruct public void setupAspectJ() { AnnotationTransactionAspect.aspectOf().setTransactionAttributeSource(transactionAttributeSource()); } } ``` 注意:上面的`AnnotationTransactionAspect`来自`org.springframework.transaction.aspectj`包。我们需要添加依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> ``` 由于这种方式比较复杂,而且通常我们建议事务注解只加在公共方法上,因此修改这个属性并启用AspectJ事务管理的情况并不常见。 根据用户的再次提问,我认为用户可能只是希望修改这个属性,但并没有意识到非公共方法事务生效还需要其他条件。因此,在回答中需要强调这一点。 现在,我将给出一个更简单的答案,仅针对修改`allowPublicMethodsOnly`属性,并提醒用户非公共方法事务生效的条件。 **回答**: 要修改`AnnotationTransactionAttributeSource`的`allowPublicMethodsOnly`属性,您需要通过自定义Bean来覆盖Spring默认的事务属性源。具体步骤如下: 1. **定义自定义的`AnnotationTransactionAttributeSource` Bean**:创建一个`AnnotationTransactionAttributeSource`的实例,并设置`allowPublicMethodsOnly`为`false`(默认为`true`)。 2. **将自定义的事务属性源注入到事务拦截器**:覆盖默认的`TransactionInterceptor`,使用自定义的事务属性源。 以下是基于Java配置的示例: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource; import org.springframework.transaction.interceptor.TransactionAttributeSource; import org.springframework.transaction.interceptor.TransactionInterceptor; @Configuration public class TransactionConfig { @Bean public TransactionAttributeSource transactionAttributeSource() { AnnotationTransactionAttributeSource source = new AnnotationTransactionAttributeSource(); source.setAllowPublicMethodsOnly(false); // 允许非公共方法上的事务注解 return source; } @Bean public TransactionInterceptor transactionInterceptor(TransactionAttributeSource transactionAttributeSource) { TransactionInterceptor interceptor = new TransactionInterceptor(); interceptor.setTransactionAttributeSource(transactionAttributeSource); // 注意:这里需要设置事务管理器,通常通过参数注入,假设已经存在一个名为transactionManager的bean // 如果事务管理器的bean名称不是transactionManager,可能需要使用@Qualifier interceptor.setTransactionManager(transactionManager); return interceptor; } // 假设已经有一个PlatformTransactionManager的bean,名为transactionManager // 或者通过参数注入,这里简化了事务管理器的配置 private final PlatformTransactionManager transactionManager; public TransactionConfig(PlatformTransactionManager transactionManager) { this.transactionManager = transactionManager; } } ``` **重要提醒**:即使设置了`allowPublicMethodsOnly`为`false`,默认情况下(使用JDK动态代理)Spring只能代理公共方法。因此,非公共方法(如protected、private)上的`@Transactional`注解仍然不会生效。要使非公共方法的事务生效,您需要: - 使用AspectJ进行织入(而不是代理),在配置类上添加`@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)`。 - 添加AspectJ的依赖并配置织入器(如编译时织入或加载时织入)。 因此,在大多数情况下,我们建议只在公共方法上使用`@Transactional`,以避免额外的配置复杂性。 §§相关问题§§ 1. 为什么默认情况下只有公共方法的事务注解会被处理? 2. 如何在Spring中启用AspectJ模式的事务管理? 3. 修改`allowPublicMethodsOnly`属性后,事务注解在非公共方法上不生效的可能原因有哪些? 4. 使用AspectJ进行事务管理有哪些优缺点? </think> 要修改 `AnnotationTransactionAttributeSource` 中 `allowPublicMethodsOnly` 属性的值,需要通过自定义配置覆盖 Spring 的默认事务属性源。以下是具体实现步骤: ### 方法一:通过自定义配置类(推荐) ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource; import org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration; @Configuration public class CustomTransactionConfig extends ProxyTransactionManagementConfiguration { @Bean @Override public AnnotationTransactionAttributeSource transactionAttributeSource() { AnnotationTransactionAttributeSource source = new AnnotationTransactionAttributeSource(); source.setAllowPublicMethodsOnly(false); // 修改属性值 return source; } } ``` ### 方法二:XML 配置方式 ```xml <bean id="transactionAttributeSource" class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"> <property name="allowPublicMethodsOnly" value="false"/> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionAttributeSource" ref="transactionAttributeSource"/> <property name="transactionManager" ref="transactionManager"/> </bean> ``` ### 关键说明: 1. **属性作用**: - `allowPublicMethodsOnly=true`(默认):仅处理 `public` 方法上的 `@Transactional` - `allowPublicMethodsOnly=false`:允许处理 `protected`/`private` 方法上的事务注解 ```mermaid graph LR A[allowPublicMethodsOnly] -->|true| B[仅处理 public 方法] A -->|false| C[处理所有方法] ``` 2. **必要操作**: - 必须覆盖默认的 `transactionAttributeSource` bean - 需确保自定义配置在事务管理器初始化前加载 - 对于非 `public` 方法的事务支持,需额外配置 AspectJ 织入[^1] 3. **注意事项**: ```java // 典型错误:直接创建实例但未注入Spring容器 AnnotationTransactionAttributeSource source = new AnnotationTransactionAttributeSource(); source.setAllowPublicMethodsOnly(false); // 此修改不会生效! ``` > **❗ 重要提示**:即使设置 `allowPublicMethodsOnly=false`,要使非 `public` 方法的事务生效,必须同时配置 AspectJ 织入模式: > ```java > @EnableTransactionManagement(mode = AdviceMode.ASPECTJ) // 启用AspectJ > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值