一、spring相关注解
1、spring注解
1)@Repository、@Service、@Controller 、 @Component
spring对于bean的注解共有四个,@Repository、@Service、@Controller 和 @Component。其实这四个都是定义一个bean,@Repository表示Dao层、@Service业务层、@Controller表示控制层,而@Component可以表示任意含义,算是一个通用的注解。
2)@Autowire、@Qualifier、@Resource
@Autowire默认按照类型装配,默认情况下bean必须存在,如果可以不存在则可以设置required属性为fals;结合@Qualifier注解可以指定名称name; @Qualifier也可以单独使用
@Resource默认按照名称装配,可以设置name属性指定名称,不设置name则取字段当做name;如果匹配不到则按类型匹配。
public class TestServiceImpl {
//false表示UserDao1可以为null
@Autowired(required = false)
@Qualifier("userDao")
private UserDao1 userDao1;
//若不指定name,则按照字段userDao22222匹配
@Resource(name="userDao2")
private UserDao2 userDao22222;
}
2、springboot注解
1)@SpringBootApplication
@SpringBootApplication的作用等价于同时组合使用@EnableAutoConfiguration,@ComponentScan,@SpringBootConfiguration.
@ComponentScan
@ComponentScan 对应于XML配置形式中的 context:component-scan
@ComponentScan注解就是用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean.
可以通过设置@ComponentScan basePackages,includeFilters,excludeFilters属性来动态确定自动扫描范围,类型已经不扫描的类型.默认情况下:它扫描所有类型,并且扫描范围是@ComponentScan注解所在配置类包及子包的类;
建议把使用@SpringBootApplication注解的类放置在root package(官方表述)下,其他类都置在root package的子包里面,这样bean就不会被漏扫描;
@EnableAutoConfiguration
从 ClassPath下扫描所有的 META-INF/spring.factories 配置文件,并将spring.factories 文件中的 EnableAutoConfiguration 对应的配置项通过反射机制实例化为对应标注了 @Configuration 的形式的IoC容器配置类,然后注入IoC容器。@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置
@SpringBootConfiguration
与@Configuration作用相同,都是用来声明当前类是一个配置类.标识这个类可以使用Spring IoC容器作为bean定义的来源可以通过@Bean注解生成IOC容器管理的bean.
3、lombok 注解
常用的lombok注解如下
@Getter / @Setter:可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。
@EqualsAndHashCode :默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。 @ToString 生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:无参构造器、部分参数构造器、全参构造器
【常用】@Data:包含@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,基本上使用这个注解就足够了。
【常用】@Budilder:可以进行Builder方式初始化。
【常用】@Slf4j:等同于:private final Logger logger = LoggerFactory.getLogger(XXX.class);简直不能更爽了!一般上用在其他java类上