springboot起步的基础注解
1.mapper类
@Mapper
@Repository
@Mapper和@Repository的区别
1.相同点
@Mapper和@Repository都是作用在dao层接口,使得其生成代理对象bean,交给spring 容器管理
对于mybatis来说,都可以不用写mapper.xml文件
2.不同点
@Mapper不需要配置扫描地址,可以单独使用,如果有多个mapper文件的话,可以在项目启动类中加入@MapperScan(“mapper文件所在包”),这样就不需要每个mapper文件都加@Mapper注解了
@Repository不可以单独使用,否则会报如下错误
Field userMapper in com.liu.service.UserServiceImpl required a bean of type 'com.liu.mapper.UserMapper' that could not be found.
1
找不到bean,这是因为项目启动的时候没有去扫描使用@Repository注解的文件,所以使用@Repository需要配置扫描地址
但在idea中,使用@Repository可以消除在业务层中注入mapper对象时的错误,如下图所示
2.serviceImpl
@Service("courseDAO")
@Scope("prototype")
1.@Service注解作用
1、 其getBean的默认名称是类名(头字母小写),可以@Service(“xxxx”)这样来指定, 2、其定义的bean默认是单例的,可以使用@Service(“beanName”) @Scope(“prototype”)来改变。
3、可以通过@PostConstruct和@PreDestroy指定初始化方法和销毁方法(方法名任意)
@Service("baseCacheService")
public class BaseCacheServiceImpl implements BaseCacheService{
}
详解
首先,在applicationContext.xml文件中加一行:
<context:component-scan base-package="com.hzhi.clas"/>
加上这一行以后,将自动扫描路径下面的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller。
比如下面这个类:
@Service("courseDAO")
@Scope("prototype")
public class CourseDAOImpl extends HibernateDaoSupport implements CourseDAO{
......
}
其作用就相当于applicationContext.xml文件里面的:
<bean id="courseDAO"
class="com.hzhi.course.dao.CourseDAOImpl" scope="prototype">
......
</bean>
2.@Scope("prototype")去掉单例模式
singleton是单例,如果你的这个bean需要共享一些信息,那么可以配置成singleton,这样的bean可以保存一些信息,方便交互,但是这样的话就需要自己去处理bean的同步问题,必须保证这个bean是线程安全的。
prototype是原型,每次得到的bean实例都是新的,不需要自己去考虑同步问题,但就无法进行成员共享。
3.service
4.controller
类
@RestController
@RequestMapping("/user")
@Validated
@Api(tags = "用户数据操作")
方法
@Autowired
private IUserService iUserService;
@GetMapping("/userQuery")
@ApiOperation("查询所有的用户")
public List<UserInfo> userQuery(){
return iUserService.userQuery();
}
5.启动类
@SpringBootApplication
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~