Springboot(四):springboot的注解都有哪些注解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot(四):springboot的注解都有哪些注解相关的知识,希望对你有一定的参考价值。
参考技术A springboot的优点就是简化配置,,没有了xml,基本都是一个配置(application.properties)+注解来实现springboot的构建那么都有哪些注解咧?说一下我在工作中常用的注解
1:##@SpringBootApplication
标识该类为SpringBoot项目启动类。并且让SpringBoot自动给程序进行必要的配置,等同于@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解.
(1):@SpringBootConfiguration表示的是该类会作为Springboot的一个配置类,
(2):@EnableAutoConfiguration表示开启自动配置功能,里面也实现了自动配置原理
@Configuration会把组件会装配到实体类上封装为一个bean,AutoConfigurationImportSelector的selectImports()这个方法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载到Spring容器中。bean有了,配置有了,相当于对象也有了,这就是自动配置.
(3):@ComponentScan用来将包加入SpringIOC的包扫描,
2: @RestController 和@Controller
@RestController相当于@Controller+@ResponseBody,
@RestController加在类上面的注解,使得类里面的每个方法都将json/xml返回数据加返回到前台页面中。
比如return "abc" 前端会展示abc三个字母
@Controller加在类上面的注解,使得类里面的每个方法都返回一个视图页面。
比如return "abc" 前端会展示静态资源中的的abc.html里面的内容
3: @component和@configuration
虽然Component注解也会当做配置类,但是并不会为其生成CGLIB代理Class,所以在生成Driver对象时和生成Car对象时调用car()方法执行了两次new操作,所以是不同的对象。当时Configuration注解时,生成当前对象的子类Class,并对方法拦截,第二次调用car()方法时直接从BeanFactory之中获取对象,所以得到的是同一个对象。
4: @Autowired 与@Resource
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。
SpringBoot系列:四SpringBoot集成JPA
首先要明白的是JPA不是产品,它是一个规范。
Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。
它的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术,结束现在 Hibernate,TopLink,JDO 等 ORM 框架各自为营的局面
在pom.xml中添加引用:jpa和mysql
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
在配置文件中添加数据库链接配置
链接字符串要指定时区和编码格式不然会导致中文乱码和报错
然后声明一个实体类,添加@Table注解制定表名,@Entity表明它是一个实体类Bean
@Id标明主键,@GeneratedValue标明主键类型,下图是mysql自增主键的例子
@Column指定映射的数据库列名,同名的话可以不写
创建一个接口继承JpaRepository,然后我们就可以使用框架为我们封装好的CURD了
调用接口看一下返回效果
剩下的删除修改就不贴了都是一样的。
接下来是JPA的查询,JPA会根据方法的名字来生成对应的查询
到控制器层试一下
调用一下接口,完美返回
删除跟新什么的都是这个套路,下面是一张对照表
Keyword | Sample | JPQL snippet |
---|---|---|
And | findByLastnameAndFirstname | … where x.lastname = ?1 and x.firstname = ?2 |
Or | findByLastnameOrFirstname | … where x.lastname = ?1 or x.firstname = ?2 |
Is,Equals | findByFirstnameIs,findByFirstnameEquals | … where x.firstname = ?1 |
Between | findByStartDateBetween | … where x.startDate between ?1 and ?2 |
LessThan | findByAgeLessThan | … where x.age < ?1 |
LessThanEqual | findByAgeLessThanEqual | … where x.age ⇐ ?1 |
GreaterThan | findByAgeGreaterThan | … where x.age > ?1 |
GreaterThanEqual | findByAgeGreaterThanEqual | … where x.age >= ?1 |
After | findByStartDateAfter | … where x.startDate > ?1 |
Before | findByStartDateBefore | … where x.startDate < ?1 |
IsNull | findByAgeIsNull | … where x.age is null |
IsNotNull,NotNull | findByAge(Is)NotNull | … where x.age not null |
Like | findByFirstnameLike | … where x.firstname like ?1 |
NotLike | findByFirstnameNotLike | … where x.firstname not like ?1 |
StartingWith | findByFirstnameStartingWith | … where x.firstname like ?1 (parameter bound with appended %) |
EndingWith | findByFirstnameEndingWith | … where x.firstname like ?1 (parameter bound with prepended %) |
Containing | findByFirstnameContaining | … where x.firstname like ?1 (parameter bound wrapped in %) |
OrderBy | findByAgeOrderByLastnameDesc | … where x.age = ?1 order by x.lastname desc |
Not | findByLastnameNot | … where x.lastname <> ?1 |
In | findByAgeIn(Collection ages) | … where x.age in ?1 |
NotIn | findByAgeNotIn(Collection age) | … where x.age not in ?1 |
TRUE | findByActiveTrue() | … where x.active = true |
FALSE | findByActiveFalse() | … where x.active = false |
IgnoreCase | findByFirstnameIgnoreCase | … where UPPER(x.firstame) = UPPER(?1) |
接下来是JPA的分页,JPA中自带了分页可以让我们直接使用
调用接口返回
开箱即用
下一章,我们讲集成Mybaits
以上是关于Springboot(四):springboot的注解都有哪些注解的主要内容,如果未能解决你的问题,请参考以下文章
springboot系列四:springboot整合mybatis jsp