spring基于注解创建对象

1、什么是注解
(1)注解是代码特殊标记 格式:@注解名称(属性名称=属性值,属性名称=属性值…)
(2)使用注解 注解作用在类上面 方法上面 属性上面
(3)使用注解的目的:简化xml配置
2、Spring针对Bean管理创建提供了四种注解
(1)@Component
(2)@Service
(3) @Controller
(4)@Repository
上面四个注解功能一样 都可以用来bean实例

3基于注解创建对象方式
第一步:引入依赖 引入spring-aop的依赖
第二部:开启组件扫描

<context:component-scan base-package="context"></context:component-scan>

第三步 创建类 在类上添加创建对象注解
//在注解里面 value属性值可以省略不写 默认值是类名称 首字母小写 userService

@Component(userService )
public class UserService {
    public void add(){
        System.out.println("ssss");
    }
}  

开启组件扫描细节问题,扫描哪些类 哪些不需要扫描
示例一 根据context:include-filter 设置扫描那些内容

<!--    开启组件扫描 如多扫描多个包第一种方法用逗号隔开 或者扫描多个包的上层目录包-->
    <context:component-scan base-package="context" use-default-filters="false">
<!--        示例一 use-default-filters="false" 表示不使用默认filters扫描全部 自己配置filters
            根据context:include-filter 设置扫描那些内容-->
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan>

示例二:根据context:exclude-filter 设置不扫描那些内容

 <context:component-scan base-package="context" >
        <!--        示例二:根据context:exclude-filter 设置不扫描那些内容-->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

基于注解方式实现属性注入

(1)@AutoWired:根据属性类型进行自动装配

第一步:把service和dao对象创建,在service和dao类添加创建对象注解
第二步:在service注入dao对象,在service类添加dao类型属性,在属性上面使用注解

//在注解里面 value属性值可以省略不写  默认值是类名称 首字母小写 userService
//userservice类
@Component
public class UserService {
    //定义Dao类型属性 然后在属性上面加上注解Autowired
    //不需要添加set方法
    @Autowired
    private UserDao userDao;
    public void add(){
        System.out.println("userService");
        userDao.add();
    }
}
//接口类
@Component
public interface UserDao {
    public void add();
}
//接口实现类
@Service
public class UserDaoImpl implements UserDao {
    public void add() {
        System.out.println("userdao");
    }
}

(2)@Qualifier:根据属性名称进行注入
这个@Qualifier注解的使用要和上面的@Autowired一起使用

//userservice类
@Component
public class UserService {
    //定义Dao类型属性 然后在属性上面加上注解Autowired
    //不需要添加set方法
    @Autowired
    @Qualifier(value = "userDaoImpl1")
    private UserDao userDao;
    public void add(){
        System.out.println("userService");
        userDao.add();
    }
}

接口实现类
一个接口可以有多个实现类 根据类型注入不知道需要去找那个 所以可以取名 根据名称来进行注入

@Service(value = "userDaoImpl1")  //一个接口可以有多个实现类 根据类型注入不知道需要去找那个 所以可以取名 根据名称来进行注入
public class UserDaoImpl implements UserDao {
    public void add() {
        System.out.println("userdao");
    }
}

(3)@Resource:可以根据类型注入,也可以根据名称注入 是javax包里的 并不是spring包中的

    //@Resource 根据类型进行注入
    @Resource(name = "userDaoImpl1")

注:前三个是根据对象类型进行注入
(4)@Value:注入普通类型属性

@Value(value = "zhangsan")
    private String name;

纯注解开发

注:在spring中作为了解 ,一般用在springBoot开发中
(1)创建配置类 ,替代xml配置文件

@Configuration  //代表配置类,替代xml文件
@ComponentScan(basePackages = {"context"}) //组件扫描
public class SpringConfig {
    
}

(2)编写测试类(测试类有点不一样)

  @Test
    public void userservice(){
        //加载配置类
        ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
        UserService emp = context.getBean("userService", UserService.class);
        System.out.println(emp);
        emp.add();
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句中的参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句中的参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句中的参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型
### 回答1: Spring使用IoC(Inversion of Control)容器来管理对象的创建和依赖注入。在Spring中,我们只需要定义好对象的类,然后在配置文件中通过配置bean的方式告诉Spring需要创建这个对象,同时还可以指定对象的属性值、依赖关系等。这样,当应用程序启动时,Spring会自动扫描配置文件中定义的bean,根据类的信息创建对象并将其存储在IoC容器中。当需要使用这些对象时,只需要从容器中获取即可。这种方式大大简化了对象的创建和管理,提高了应用程序的可维护性和可扩展性。 ### 回答2: Spring是一个开源的Java开发框架,它提供了一种简化和优化Java应用程序开发的方式。在Spring创建对象是通过控制反转(IoC)和依赖注入(DI)实现的。 在Spring中,对象的创建过程由Spring容器来管理。我们需要在配置文件中定义对象的创建和初始化方式,然后由Spring容器根据这些配置信息来动态地创建和管理对象。 Spring通过XML配置文件或者注解的方式来定义对象的创建方式。在配置文件中,我们可以定义对象的类名、构造函数参数、属性值等信息。Spring容器会根据这些配置信息来创建对象,并且将对象的引用注入到需要的地方。 通过IOC和DI,Spring实现了对象的解耦和松散耦合。在传统的开发方式中,对象之间的依赖关系是通过代码硬编码来实现的,导致代码的复杂性和可维护性降低。而在Spring中,对象之间的依赖关系由Spring容器来管理,我们只需在配置文件中定义好依赖关系,就可以实现对象的创建和组装。 总之,Spring的对象创建方式是通过IOC和DI实现的,它能够简化和优化Java应用程序开发过程,提高代码的可维护性和可重用性。 ### 回答3: Spring是一个开源的Java框架,通过使用Spring容器来管理和创建对象Spring创建对象的理解可以分为以下几个方面: 首先,Spring使用依赖注入(DI)的方式来创建对象。通过配置文件或注解,我们可以告诉Spring需要创建的对象以及其依赖的其他对象。Spring容器根据这些配置信息,在运行时动态地创建对象并将其注入到需要使用的地方。 其次,Spring的对象创建是基于反射机制的。Spring通过反射来实例化类,而不需要我们手动调用构造函数。这样可以减少代码的复杂性,并且可以通过配置灵活地替换和切换不同的实现类。 另外,Spring的对象创建是单例模式的。Spring容器默认情况下会创建单例的对象,这样可以节省资源并提高性能。当我们需要使用某个对象时,Spring会直接返回之前创建的实例,而不是每次都创建一个新的实例。 最后,Spring还提供了一些特殊的对象创建方式,比如原型模式、工厂模式等。这些方式可以根据我们的需求来创建不同类型的对象,并且可以根据配置来指定具体的创建方式。 总结来说,Spring的对象创建是通过依赖注入、基于反射机制和单例模式来实现的。这样可以减少我们手动创建对象的工作量,提高代码的可维护性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值