在开发过程中, 我们经常有碰到工具类里面, 要执行 CRUD 操作, 需要调用到 Service 实现类, 这时可以通过下述方法来得到.
1 注入 @Component
在持久层, 业务层和控制层中, 分别采用 @Repository,@Service 和 @Controller 对分层中的类进行凝视; 而用 @Component 对那些比较中立的类进行凝视.
[如下图:@Repository,@Service,@Controller,@Component 在同一路径下, 分别对不同类型的类进行凝视]
2 注入 @PostConstruct
通过 @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁 bean 之前进行的操作.
通过 步骤 1: 定义一个 static 的工具类参数, 步骤 2 在用 @PostConstruct 初始化中, 把该静态参数实例化
- ``
- @Component
- public class SMSUtils {
- @Autowired
- private ISmsService smsService; // 添加所需 service 的私有成员 [不能加 static, 不然 smsService 会等于 null, 因为 static 方法是先于对象创建之前就已经加载的方法, 先于构造执行, 是属于类的方法]
- private static SMSUtils smsUtils; // 步骤 1 静态初使化 一个工具类 这样是为了在 spring 初使化之前
- public static final String SMS_PHONE_CODE = "xxxxx";
- public static final String SMS_REG_SUCCESS = "yyyyyy";
- @PostConstruct
- public void init() {
- smsUtils = this;
- smsUtils.smsService = this.smsService; // 步骤 2 初使化时将已静态化的 testService 实例化, 即可以使用 smsUtils.smsService.smsServicelai 来调用 service 服务
- }
- // 发送短信验证码 params 请严格按照模板输出的字段顺序来
- public static void sendSms(String phone, String[] params, String templateCode) {
- SmsResponse smsResponse = smsUtils.smsService.sendSms( phone, jsonStr, templateCode );
- }
- }
来源: http://www.bubuko.com/infodetail-2549715.html