IOC 控制反转,把创建对象过程交给Spring进行管理。
在泰州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设 网站设计制作按需设计网站,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销,外贸网站制作,泰州网站建设费用合理。
目录
什么是注解
Bean 管理注解方式(创建对象)
基于注解方式实现对象创建
第一步:引入依赖
第二步:开启组件扫描
创建类,在类上面添加创建对象注解(下面三个都可以)
Bean管理注解方式(组件扫描细节配置)
基于注解方式实现属性注入(注入属性@)
@AutoWired :根据属性类型进行自动装配;
@Qualifer :根据属性名称进行注入
@Resource :可以根据类型注入,可以根据名称注入
@Value :注入普通类型属性
完全注解开发
Bean 管理
Bean 管理操作有两种方式
第一种:基于xml配置文件方式实现
第二种:基于注解方式实现
基于xml配置文件方式实现可以看下面的文章
IOC 的底层原理和Bean管理XML方式、xml注入集合属性
Bean 管理(工厂bean)
ICO操作Bean管理的(bean的作用域和生命周期)
Bean 管理XmL方式(自动装配和外部属性文件)
话不多说,正式进入Bean管理的注解方式
什么是注解- 注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值)
- 使用注解,注解作用于类上面,方法上面,属性上面
- 使用注解目的,简化xml配置
Spring针对Bean管理中创建对象提供注解
@Component @Service @Controller @Repository
四个注解功能一样的,都可以用来创建bean实例,大多数时候会把它们写在不同层中,主要为了更好的理解不同层的业务逻辑。
基于注解方式实现对象创建 第一步:引入依赖 第二步:开启组件扫描通俗就是告诉spring5需要扫描某个类。
如果扫描多个包,在多个包之间使用逗号隔开;
如果是扫描同一个目录下所有的包,直接在路径中写上层目录
创建类,在类上面添加创建对象注解(下面三个都可以)@Component @Service @Controller @Repository
在注解里面的value属性值可以省略,如果省略 那它的默认值是类名称,但首字母会小写。
@Component(value = "userService") 就相当于 创建service时的路径 bean id="userService"
@Component(value = "userService")
public class UserService {
public void add(){
System.out.println("service add...");
}
}
测试
@Test
public void testService (){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService",UserService.class);
System.out.println(userService);
userService.add();
}
Bean管理注解方式(组件扫描细节配置)use-default-filters="false" :表示现在不用默认Filter ,需要自己配置
context:include-filter:表示 设置扫描哪些内容
context:exclude-filter:设置哪些内容不进行扫描; base-package="com.atguigu" 后面没有带 use-default-filters="false" 表示扫描所有,但 context:exclude-filter:可以设置哪些不被扫描。下面就表示布扫描 Component
基于注解方式实现属性注入(注入属性@)
@AutoWired :根据属性类型进行自动装配;第一步:把service和dao对象创建,在service和dao类添加创建对象注解;
第二步:在service 注入dao对象;在service类添加dao类型属性,在属性上面使用注解
@Service
public class UserService {
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
@Autowired
private UserDao userDao;
public void add(){
System.out.println("service add...");
userDao.add();
}
}
@Qualifer :根据属性名称进行注入这个@Qualifer注解的使用,和上面@AutoWired一起使用
@Service
public class UserService {
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
@Autowired //根据类型属性注入
@Qualifier(value = "userDaoImpI")//根据名称注入
private UserDao userDao;
public void add(){
System.out.println("service add...");
userDao.add();
}
}
@Resource :可以根据类型注入,可以根据名称注入根据类型注入
@Resource
private UserDao userDao;
public void add(){
System.out.println("service add...");
userDao.add();
}
根据名称注入
@Resource(name = "userDaoImpI")
private UserDao userDao;
public void add(){
System.out.println("service add...");
userDao.add();
}
@Value :注入普通类型属性@Value(value = "abc")
private String name;
完全注解开发创建配置类,替代xml配置文件
@Configuration //作为配置类,替代xml 配置文件
@ComponentScan(basePackages = {"com.atguigu"})
public class SpringConfig {
}
上面代码的 @ComponentScan(basePackages = {"com.atguigu"}) 相当于 xml 文件的
编写测试类
@Test
public void testService2 (){
//加载配置类
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService",UserService.class);
System.out.println(userService);
userService.add();
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
本文名称:IOC操作Bean管理(基于注解方式)-创新互联
文章源于:http://scgulin.cn/article/jcjic.html