第四篇文章:通过注解创建对象,给对象的普通属性赋值,给对象的对象属性赋值

1.通过注解创建对象

可以用于创建对象的注解

以下注解可以创建对象:

@Component:可以创建任意的对象,什么对象都可以用它来创建

@Controlller:专门用来创建界面层,Controller层的对象

@Service:专门用来创建业务逻辑层,Service层的对象

@Repository:专门用来创建数据访问层,dao层/mapper层的对象


 

你想创建哪个类的对象,就在这个类前面加上Componet注解


//表示告诉spring要创建一个Student类的对象,名字叫myStudent,创建出来的对象放在容器中
//也就是相当于Student  myStudent=new  Student();

@Component("myStudent")
public class Student
{
    private String name;
    private Integer age;
}

如果直接写@Componet,没有后面的("myStudent”,那么默认你创建的对象名字就是这个类的首字母小写)

这个类叫Student,所以给你创建的类的名字就叫student

测试代码:

        String config= "applicationContext.xml";
        ApplicationContext ctx=new ClassPathXmlApplicationContext(config);
        //上面创建好了一个容器对象

        //从容器中找到名字叫做myStudent的对象
        Student student= (Student) ctx.getBean("myStudent");
        System.out.println("student=="+student);

2.通过注解给对象的普通属性赋值

 (1)在想要赋值的属性上面输入@Value注解即可(更推荐这种方式,不推荐下面第二种方式)

@Component("myStudent")
public class Student
{
    @Value("李四")
    private String name;
    
    @Value("20")
    private Integer age;
}

(2)也可以在对应的set方法上使用@Value注解

@Component("myStudent")
public class Student
{
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    @Value("李四")
    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    @Value("20")
    public void setAge(Integer age) {
        this.age = age;
    }
}

(3)@Value注解+外部属性配置文件(properties文件)

在resources这个文件夹下main放一个myconf.properties文件,文件内容:

myname=张三
myage=28

然后在配置文件中:增加一个property-placeholder标签

 <context:property-placeholder  location="classpath:/myconf.properties"/>

最后在类中的属性上面或者set方法上面:

@Component(value="myStudent")
public class Student
{
    @Value("${myname}")
    private String name;

    @Value("${myage}")
    private Integer age;
}

3.通过注解给  对象属性赋值

对象属性就是 属性是一个对象

有两种方式给对象属性赋值:

(1)单独使用@Autuwired  按类型注入   byType

从整个bean工厂中搜索和 的类相同的类的对象,进行赋值

比如说:private  School school,那么对象属性的类就是School类,需要去bean工厂里面找School类的对象,注入给这个对象属性

step1:这是一个School类

通过@Component注解创建一个School类的对象,对象名叫mySchool

@Component("mySchool")
public class School
{
    @Value("北京大学")
    private String name;
    @Value("北京海淀区")
    private String address;

}

step2:这是一个Student类

先创建了一个Student类的对象,名字叫作myStudent

然后重点是我们要给这个对象的对象属性进行赋值

@Component("myStudent")
public class Student
{

    @Value("张三")
    private String name;

    @Value("20")
    private Integer age;

    @Autowired
    //默认使用byType
    private School school;
}

spring会搜索容器内有没有对象的类型是School的,显然上面的mySchool这个对象就是School类型的对象,于是就会将mySchool对象作为属性赋值给myStudent这个对象的school属性

(2)@Autowired+@Qualified   按名字注入  byName注入

@Component("mySchool")
public class School
{
    @Value("北京大学")
    private String name;
    @Value("北京海淀区")
    private String address;

}

@Component("myStudent")
public class Student
{

    @Value("张三")
    private String name;

    @Value("20")
    private Integer age;

    @Autowired
    @Qualifier("mySchool")
    private School school;
}

在容器内找,将名字叫作mySchool的对象赋值给myStudent对象的school属性

给对象属性赋值之后可以测试一下:

        String config= "applicationContext.xml";
        ApplicationContext ctx=new ClassPathXmlApplicationContext(config);
        //上面创建好了一个容器对象

        //下面创建一个Student类对象
        Student student= (Student) ctx.getBean("myStudent");

        System.out.println(student.getAge());
        System.out.println(student.getName());
      
        System.out.println(student.getSchool().getAddress());
        System.out.println(student.getSchool().getName());

注意:还有一个注解@Resource也可以完成给对象的属性进行赋值

将@Autowired改为@Resource即可

@Component("myStudent")
public class Student
{

    @Value("张三")
    private String name;

    @Value("20")
    private Integer age;

    @Resource
    private School school;
}

比较有意思的是,@Resource注解默认使用byName自动注入,如果找不到需要的对象,就使用byType自动注入

@Resource注解只使用byName自动注入:@Resource(name="mySchool")

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 使用类选择器 ".a" 遍历所有 class 属性为 "a" 的元素,可以使用以下代码: ```javascript $(".a").each(function() { // 这里是对每个匹配元素执行的操作 // 可以使用 $(this) 来访问当前元素 }); ``` 2. 使用 `children()` 方法可以获取当前元素的所有子元素,通过 `:first` 选择器可以选取第一个子元素。以下是获取第一个子元素的方法: ```javascript var firstChild = $(selector).children(":first"); ``` 3. JSON 是一种轻量级的数据交换格式,它使用键值对的方式来表示数据。以下是 JSON 的数据格式示例: ```json { "key1": "value1", "key2": "value2", "key3": { "nestedKey": "nestedValue" }, "key4": [1, 2, 3] } ``` 4. 在 Spring MVC 中,常用的注解标签及其作用包括: - `@Controller`: 将类标记为控制器,处理请求并返回响应。 - `@RequestMapping`: 将方法映射到特定的 URL 或请求方法。 - `@RequestParam`: 获取请求参数的值。 - `@PathVariable`: 获取 URL 路径中的参数值。 - `@ResponseBody`: 将方法返回的对象转换为响应体。 - `@ModelAttribute`: 绑定请求参数到方法参数或模型属性。 - `@Autowired`: 自动注入依赖对象。 - `@Valid`: 验证请求参数的有效性。 5. 使用 `final` 关键字修饰一个变量表示它是一个常量,一旦赋值后不能再修改。使用 `final` 修饰一个对象表示该对象的引用不可变,但对象本身的状态可以改变。 6. MVC 的各个部分可以使用以下技术来实现: - 模型 (Model): 使用 Java 类或对象表示数据模型,可以使用任何 Java 技术来实现。 - 视图 (View): 使用 HTML、CSS 和 JavaScript 来实现前端页面,也可以使用模板引擎技术来生成动态页面。 - 控制器 (Controller): 可以使用 Servlet、Spring MVC、Struts 等框架来处理请求和调度业务逻辑。 7. Tomcat 的优化包括以下几个方面: - 调整 Tomcat 的线程池大小和配置,以提高并发处理能力。 - 配置连接池,以减少连接创建和销毁的开销。 - 启用压缩功能,减少传输数据的大小。 - 配置静态资源缓存,减少对磁盘的访问次数。 - 调整 JVM 参数,以提高性能和内存管理。 8. RDB (Redis Database) 和 AOF (Append-Only File) 是 Redis 持久化的两种方式的缩写。它们的区别如下: - RDB 是将 Redis 的数据以二进制形式保存到硬盘上,适合用于数据备份和恢复,但可能会有数据丢失的风险。 - AOF 是将 Redis 的操作日志以文本形式追加到文件中,适合用于数据持久化和灾备,但文件较大可能会占用更多的磁盘空间。 9. Java 集合的种类包括 List、Set、Map 等。Map 是一种键值对的数据结构,它可以根据键快速查找对应的值。Map 的扩容策略通常是在当前容量超过阈值时进行扩容,具体实现方式可以是重新创建一个更大容量的数组,并将原数组中的元素重新哈希到新数组中。 10. 项目中人员权限通常使用数据库中的表来存储和管理。常用的表包括: - 用户表:存储用户信息,如用户名、密码、角色等。 - 权限表:存储权限信息,如权限名称、权限编码等。 - 角色表:存储角色信息,如角色名称、角色编码等。 - 用户角色关联表:用于关联用户和角色。 - 角色权限关联表:用于关联角色和权限。 通过这些表的关系,可以实现用户与权限的关联和控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值