Spring注解开发
前言:总共是四个实体类(
User.java
、UserDao
、UserService
、UserControlle.javar
),和一个测试类MyTest.java
和一个ApplicationContext.xml
文件
User.java
package com.zkw.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
//单例模式
@Scope("singleton")
public class User {
public String name;
@Value("CRAZY")
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void show(){
System.out.println("pojo使用"+"\\@Component\\"+"这个注解被Spring托管了");
}
}
UserDao.java
package com.zkw.dao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
@Repository
//作用域为 原型模式
@Scope("prototype")
public class UserDao {
public void show(){
System.out.println("dao层使用"+"\\@Repository\\"+"这个注解被Spring托管了");
}
}
UserService.java
package com.zkw.service;
import org.springframework.stereotype.Service;
@Service
public class UserService {
public void show(){
System.out.println("service层使用"+"\\@Service\\"+"这个注解被Spring托管了");
}
}
UserController.java
package com.zkw.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
public void show(){
System.out.println("controller层使用"+"\\@Controller\\"+"这个注解被Spring托管了");
}
}
解释:@Controller、@Service、@Repository 这三个注解是 @Component 这个注解的衍生注解,它们作用是一样的,都是为了把这个类注册到Spring容器中,装配bean
- @Controller:通常用在Controller层,也就是在Mybatis中的Servlet层
- @Service:用在Service层
- @Repository :用在Dao层
这四个装配类的注解,就是原先`ApplicationC
@Value(“xxx”)这个注解就是个属性赋值的,可以用在属性上也可以用在set方法上,也就是
ApplicationContext.xml
文件中的<property name="" value=""/>
@Scope(“xxx”) 作用域常用的有两个,分别是:
singleton
(单例模式)、prototype
(原型模式)也就是ApplicationContext.xml
文件中的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QuDZtiKn-1634103601282)(C:\Users\10404\Desktop\Spring截图集合\jt-7.png)]
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--扫描特定包下的Spring注解,只有在这个包下的注解才会生效-->
<context:component-scan base-package="com.zkw"/>
<!--开启注解-->
<context:annotation-config/>
</beans>
MyTest.java
import com.zkw.controller.UserController;
import com.zkw.dao.UserDao;
import com.zkw.pojo.User;
import com.zkw.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void TestUser(){
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
User user = context.getBean("user", User.class);
User user1 = context.getBean("user", User.class);
System.out.println(user.getName());
System.out.println(user.equals(user1));
user.show();
UserDao userdao = context.getBean("userDao", UserDao.class);
UserDao userdao1 = context.getBean("userDao", UserDao.class);
System.out.println(userdao.equals(userdao1));
userdao.show();;
UserService userService = context.getBean("userService", UserService.class);
userService.show();
UserController userController = context.getBean("userController", UserController.class);
userController.show();
}
}
结果如下