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;@Repositorypublic 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;@Servicepublic class UserService {@Autowiredprivate 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();}}
