Spring学习第二天------2021-07-14-注解导入
文章目录
注解
1.配置pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zx</groupId>
<artifactId>20210717_Spring03_zhujie</artifactId>
<version>1.0-SNAPSHOT</version>
<!--Spring IOC-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
</dependencies>
</project>
2.配置beans.xml
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bean="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<!--开启注解-->
<context:annotation-config/>
<!--开启自动扫描-->
<context:component-scan base-package="com.zx"></context:component-scan>
</beans>
3.其它
1、在需要被找到的类上方添加@Component
也就是在需要做控制反转的类上标明注解@Component
@Component
public class RoleDaoImpl implements RoleDao {
@Override
public void addRole(Role role) {
System.out.println("中间表添加角色");
}
}
或者
若在Servlet层,可将@Component注解改为@Controller
@Controller()
public class UserServlet {
@Resource()
private UserService userService ;
public void add() {
User user = new User();
Role role = new Role();
userService.add(user,role);
}
}
若在Service层,可将@Component注解改为@Service
@Service
public class UserServiceImpl implements UserService {
//@Autowired
@Resource
private UserDao userDao ;
//@Autowired
@Resource
private RoleDao roleDao ;
@Override
public void add(User user, Role role) {
System.out.println("开启事务");
userDao.add(user);
roleDao.addRole(role);
System.out.println("提交事务");
}
}
若在Dao层,可将@Component注解改为@Repository
@Repository
public class RoleDaoImpl implements RoleDao {
@Override
public void addRole(Role role) {
System.out.println("中间表添加角色");
}
}
2、在需要找的属性上方添加@Autowired
也就是在需要的私有属性上方标明@Autowired注解
@Autowired
private UserService userService ;
或者
写成@Resource属性
@Resource()
private UserService userService ;
若是想给普通属性赋值可写@Value注解
@Value("15")
private int age;
【notes】
@Autowired或者@Resource默认是ByType来注入,需要提供唯一的一个类型能匹配的id标签,但是如果有好几个类型都能匹配,那么在注解中可以通过,名称来指定
或者@Resource(name=’’‘xxx’),xxx为另一个类型的类名首字母小写,也就是说在注解里写一个字符串就相当于它的新名字,别人就必须通过这个新名字来找到它,旧名字就失效了
这些注解本身都是通过byType来寻找的,如果说它们的 类型都一致,就需要根据名字来寻找了,这个时候就需要在被调用的类的注解上添加一个名字,然后再调用它的属性的注解上加上name=“xxx”即可
【Note】 【总结】字节的类采用注解方式,第三方采用xml方式