注解开发
Spring高版本需要有aop的包。
配置文件
POJO
@Component//作为组件注入bean 类似于
public class User {
//值的注入类似于我们的【Spring 注解开发】
@Value("张三")
private String name;
public String getName() {
return name;
}
}
Dao
@Repository//注入默认为 Dao层对应三层架构的数据持久层
public class UserDao {
private User user;
@Autowired
public UserDao(User user){
this.user = user;
}
public void getName(){
System.out.println(user.getName());
}
}
Service
@Service//注入默认为 Service层对应三层架构的业务层
public class UserService {
public UserDao userDao;
@Autowired
public UserService(UserDao userDao){
this.userDao = userDao;
}
public void getName(){
userDao.getName();
}
}
Controller
@Controller//注入默认为 Controller层对应三层架构的控制层层
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService){
this.userService=userService;
}
public void getName(){
userService.getName();
}
}
启动类
public class AnnotationTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
UserController userDao = context.getBean("userController", UserController.class);
userDao.getName();
}
}
纯注解开发
配置文件
/**
* 标明该类是Spring的配置类
* 类似于我们的xml文件
* 这个类也会交给Spring管理,@Configuration包含@Component注解
*/
@Configuration
/**
* 包扫描类似于
*/
@ComponentScan("com.spring")
/**
* 导入另一个配置文件
* 类似于
*/
@Import(SpringConfig2.class)
public class SpringConfig {
/**
* 类似于
* 注入了一个对象
* 方法名是id属性
* 方法返回值的类型是class属性
*/
@Bean
public User user(){
return new User();
}
}
推荐阅读
- Spring DI依赖注入
- Spring bean的作用域
- Spring入门(一)
- Spring 创建对象的方式
- @Bean与@Component 用在同一个类上,会怎么样()
- 最全的Spring依赖注入方式,你都会了吗()
- 数据转pdf(包含echarts图表)
- spring之源码环境构建
- 大厂常考的Spring面试题