我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。
扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。
(2)java -jar 盘:文件名XXXX.jar
使得可以双击执行 .jar程序(可选)。 要双击打开.jar文件的话,需要把 javaw (java 应用程序管理器)可执行程序文件路径改变,输入以下代码: C:Program FilesJavaj2rex.y.zinjavaw.exe" -jar "%1" %*
以前写Spring MVC的时候,要添加一个新页面访问总是要新增一个Controller或者在已有的一个Controller中新增一个方法,然后再跳转到设置的页面上去。考虑到大部分应用场景中View和后台都会有数据交互,这样的处理也无可厚非,不过我们肯定也有只是想通过一个URL Mapping然后不经过Controller处理直接跳转到页面上的需求!今天在做Spring Security相关配置的时候偶然发现了Spring也为我们提供了一个办法!那就是 WebMvcConfigurerAdapter !废话不多说了,直接看代码:
[java] view plain copy
那么通过上面的配置,不用添加LoginController或者处理“login”的方法就可以直接通过“http://localhost:8080/projectContext/login”访问到login.html页面了!
从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(那个xml写的是真的蛋疼。。。)
//UserDAO
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import entity.User;
/**
* 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类
*
* 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id
* 也就是说这个接口是不支持重载的
*/
@Mapper
public interface UserDAO {
@Select("select * from user where name = #{name}")
public User find(String name);
@Select("select * from user where name = #{name} and pwd = #{pwd}")
/**
* 对于多个参数来说,每个参数之前都要加上@Param注解,
* 要不然会找不到对应的参数进而报错
*/
public User login(@Param("name")String name, @Param("pwd")String pwd);
}
测试类代码
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import dao.UserDAO;
import entity.User;
public class TestCase {
@Test
public void testMapper() {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring-mybatis.xml");
UserDAO dao = ac.getBean(UserDAO.class);
User u1 = dao.find("hehe");
User u2 = dao.login("hehe", "123");
System.out.println(u1.getName().equals(u2.getName()));
}
}
测试结果:
java中元注解有四个: @Retention @Target @Document @Inherited;
@Retention:注解的保留位置
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target:注解的作用目标
@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包
@Document:说明该注解将被包含在javadoc中
@Inherited:说明子类可以继承父类中的该注解
举例:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface AnnatDemo{
public int value();
}
以上代码定义了@AnnatDemo注解,作用目标是 用于对方法注解,并且保留在运行时的环境中,我们可以利用反射 获得一个方法上的注解 调用定义的方法,
比如@AnnatDemo 作用于以下方法:
public interface IClientProtocolEx extends IProtocol {
int METHOD_START=0;
@AnnatDemo(METHOD_START)
public String say(String person);
}
那么可以利用以下代码进行反射:
Class ipt=IClientProtocalEx.class;
Method[] mts=ipt.getMethod();
for(Method mt:mts)
{
AnnatDemo ad=mt.getAnnotation(AnnatDemo.class);//如果方法上 没有该注解 则返回null
int value=ad.value();
System.out.println("value:"+value);
}
转载:https://www.cnblogs.com/zheli/p/8379736.html
推荐内容:
java面试题----工厂模式大整理(面试问的较多)
一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)
推荐几个IDEA插件,Java开发者撸码利器。
Java 微服务框架选型(Dubbo 和 Spring Cloud?)
大白话说Java反射:入门、使用、原理
JAVA面试题(8)
Java面试题收集
Java面试& HashMap实现原理分析
Java面试题总结-Day3
JAVA日志的前世今生