一、注解相关

常见的注解:

1、@controller 控制器(注入服务)

2、@service 服务(注入dao)

3、@repository dao(实现dao访问)

4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的)

@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。

下面写这个是引入component的扫描组件

其中base-package为需要扫描的包(含所有子包)

1、@Service用于标注业务层组件
2、@Controller用于标注控制层组件(如struts中的action)
3、@Repository用于标注数据访问组件,即DAO组件.
4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Service
public class UserServiceImpl implements UserService {
}
@Repository
public class UserDaoImpl implements UserDao {
}

getBean的默认名称是类名(头字母小写),如果想自定义,可以     @Service(“*”)

这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”)

@Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意): @PostConstruct public void init() { }

二、Springboot测试相关

SpringBoot未编写完代码的情况下能否先用main方法测试Repository类?

1、不可以,因为SpringBoot使用启动类启动的,如果使用main方法,启动类未启动就无法获得注解,也就无法获得对象实例等

2、但可以用JUnit(Java语言的单元测试框架)来测:

多数Java的开发环境都已经集成了JUnit作为单元测试的工具

极限编程:

要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。

三、对象转化成JSONObject对象打印

怎么迅速将Java对象的详细内容打印下来?

比如你有一个复杂的对象:Person, 里边有姓名,电话,地址,地址又是一个复杂的类。

你有一个Person的对象person,你可以先将此对象转化成JSONObject对象:

personJSON = JSONObject.fromObject(person);

然后在System.out.println(personJSON)打印

因为JSONObject的toString方法做了很友好的格式转化,很容易阅读和理解,像下边那样:

{"allowedPolicies":[],"decision":"Deny","explicitlyDeniedPolicies":[],"implicitlyDeniedPolicies":[]}
fastjson使用
import com.alibaba.fastjson.JSONObject;
for(OrderInfo info : orderInfos){
JSONObject json = (JSONObject)JSONObject.toJSON(info);
System.out.println(json);
}