Spring 5.x 应用零配置开发
3.1 注解
3.1.1 声明Bean注解
@Component: 组件 没有明确规定其角色
@Service: 业务逻辑
@Repository: dao层
@Controller: 控制器声明
3.1.2 注入Bean注解
@AutoWired: Spring 官方提供注解
@Inject : JSR-330提供注解
@Resource:JsR250
一般声明在属性上
3.1.3 配置与获取Bean注解
@Configuration: 作用于类上,将当前类声明为一个配置类,相当于一个xml配置文件
@ComponentScan: 自动扫描置顶包下标注有@Respository @Service @ Controller
@Component: 注解的类 由IOC实例化和维护
@Bean: 作用于方法上,相当于xml文件中的<Bean> 生命当前方法返回一个bean 调用别人的类交给ioc时使用
@Value: 获取properties 文件制定key value值
实例1:IOC中Bean的实例化与获取
- 创建Spring普通工程
添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
- dao层
package org.angyi.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
public void test(){
System.out.println("UserDao....");
}
}
3 service层
package org.angyi.service;
import org.angyi.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public void test(){
System.out.println("UserService...");
userDao.test();
}
}
- config配置类
package org.angyi.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration //生命配置类 相当于xml文件
@ComponentScan("org.angyi") //设置扫描包范围
public class IocConfig {
}
- 测试类
package org.angyi;
import org.angyi.config.IocConfig;
import org.angyi.service.UserService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContextExtensionsKt;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ){
// 基于java配置类得到上下文环境
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(IocConfig.class);
// 获取需要实例化的bean对象
UserService userService = ac.getBean(UserService.class);
userService.test();
}
}