前言
今天需要验证OpenId,来看是否为系统用户,直接封装一个工具类,遇到了调用业务层service的方法。记一次学习笔记一、如何实现?
- 直接实现一个static的方法,如果openid在数据库中有数据就返回微信对象,如果没有就直接抛异常给前端。
- 在代码中需要验证openid的地方直接调用static方法。
二、Util工具类实现
要求:Util类中的静态方法需要调用wxUserService中的方法以获取用户角色
代码如下(示例):
@Component // 交由spring管理
public class Util{
@Autowired // 注入
private WxUserService wxUserService;
// 声明对象
public static Util util;
@PostConstruct // 初始化
public void init(){
util= this;
util.wxUserService = this.wxUserService;
}
public static WxUser OpenId(String openid) {
// 调用
WxUser wxUser = util.wxUserService.selectByOpenId(openid);
//异常抛出
BusinessCheck.checkNull(wxUser, BusinessErrorCodeEnum.NOT_NULL);
// 逻辑处理
return wxUser;
}
就是这样实现调用就是Util.OpenId(openid);下面就是自己学习的部分,大家可以不用看哦!
代码相关注解
1.@Component是spring中的一个注解,它的作用就是实现bean的注入,注解本质上就是一个类,开发中我们可以使用注解 取代 xml配置文件。
web开发,提供3类@Component注解衍生注解(功能一样)取代
@Repository(“名称”):dao层
@Service(“名称”):service层
@Controller(“名称”):web层
@Autowired:自动根据类型注入
@Qualifier(“名称”):指定自动注入的id名称
@Resource(“名称”)
@ PostConstruct 自定义初始化
@ PreDestroy 自定义销毁
下面直接看具体例子:
第一种方法
第二种方法:
一、阐述一下关于ApplicationContext类的作用做测试的话,获得Spring中定义的Bean实例(对象).可以用:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
RegisterDAO registerDAO = (RegisterDAO)ac.getBean("RegisterDAO");
如果是两个以上:
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","dao.xml"});
或者用通配符:
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:/*.xml");
二、ClassPathXmlApplicationContext[只能读放在web-info/classes目录下的配置文件]和FileSystemXmlApplicationContext的区别
classpath:前缀是不需要的,默认就是指项目的classpath路径下面; 如果要使用绝对路径,需要加上file:前缀表示这是绝对路径;
FileSystemXmlApplicationContext:
默认表示的是两种:
1.没有盘符的是项目工作路径,即项目的根目录;
2.有盘符表示的是文件绝对路径.
如果要使用classpath路径,需要前缀classpath:
2.@PostConstruct(是一个java注解)
@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
通常我们会是在spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
总结
今天博客就是这样子,主要介绍了工具类的编写,解决一些重复代码的使用,还学习了两个注解以及以前面试中遇到的一些问题;
好啦,今天就写这一篇吧,祝愿每个人每天都在进步!加油!!!