Class.forName(),数据库unique约束,@Resource和@Autowired,@RestController,maven父子项目

Class.forName()

  • java类加载器负责把java字节码文件读取,然后加载到jvm中,并且转换成一个Class类的实例,每一个java类都有一个对应Class类的实例,这个类负责描述如何创建这个类的实例,比如该类包含哪些成员变量和成员方法等。在第一次使用这个类的时候,类加载器会检查是否加载此类的Class对像,如果没有加载到jvm中,则会把这个Class对象加载到jvm中。
  • java也提供了手动加载类的接口,Class.forName()和xxx.class 可以把该类的Class对象加载到jvm中。在jvm中加载了Class对象之后,还要经过类初始化才能正常使用此类,初始化就是执行一遍静态变量的声明和执行一遍静态代码块。而上述两种接口的不同之处是前者会加载Class对象并且初始化类,但是后者只会加载Class对象不会初始化类

mysql中字段unique约束

为了防止非主键字段中两个值完全一样的情况,可以对其添加unique约束,强制其唯一

@Resource和@Autowired的区别

  • @Resource是默认自动按照byName实现依赖注入,而后者则是按照byType来实现依赖注入。如果既没有指定前者的name属性,也没有指定type属性,则按照byName查找bean,如果按照byName找不到,则按照byType找,找到一个类型匹配的直接注入
  • @Autowired是按照类型先查找bean,如果查找的bean唯一,则注入,如果查找到多个,则按照byName查找,如果没有找到,则抛出异常,可以把其属性设为required = false来避免此问题

@RestController和@Controller

  • 后者是标注方法return返回的是一个页面,如html页面或者jsp页面,若要返回 json 等内容到页面,需要加@ResponseBody注解
  • 前者是@Controller注解和@ResponseBody注解的结合

maven中的子模块

可以方便引入父项目中所有的依赖,不必每个子模块都引入共有的依赖

  • 项目模块化可以提取出项目中共有的部分,方便重用,并且修改一部分代码可以只用build代码所在模块,不用build整个项目,缩短了build时间。父项目中要通过modules将所有的子项目引进来,在build时,会根据子模块之间的依赖关系,整理出一个build顺序。pom打包方式一般用于父项目中,用来在jar包的版本控制,子模块默认打包方式为jar包

你可能感兴趣的:(Class.forName(),数据库unique约束,@Resource和@Autowired,@RestController,maven父子项目)